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

2022-09-01 03:43:09

我有一个测试类,其中包含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开始时,它读取所有必要的东西,然后运行测试,然后关闭所有必要的东西。然后开始测试2。


答案 1

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

Java Doc

弹簧文档

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

@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)

答案 2

推荐