一尘不染

每次测试后重新加载Spring应用程序上下文

java

我有一个包含2个测试的测试类:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:applicationContextTest.xml" })
@Transactional
@TransactionConfiguration(defaultRollback = true)

public class MyITest extends implements BeanFactoryAware {

    private BeanFactory beanFactory;

    @Test
    public void test1() throws Exception {}

    @Test
    public void test2() throws Exception {}        
}

当我单独运行测试时,我不会出错,但是当我同时运行所有测试时,会失败。失败是由于某些测试修改了应用程序上下文导致的:

  b = beanFactory.getBean("logDataSource", BasicDataSource.class);
  b.set ...

是否可以单独运行此测试?我只想在启动test1时读取所有必需的东西,然后运行测试,然后关闭所有必需的东西。然后启动test2。


阅读 249

收藏
2020-12-03

共1个答案

一尘不染

您可以在修改应用程序上下文的测试类上使用@DirtiesContext批注。

Java文档

Spring文档

默认情况下,这将在整个测试类运行之后将应用程序上下文标记为脏。如果要在使用单个测试方法后将上下文标记为脏,则可以对测试方法进行注释,也可以在类级别的注释中将classMode属性设置为AFTER_EACH_TEST_METHOD。

@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
2020-12-03