我有一个包含 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。
最佳答案
您可以在修改应用程序上下文的测试类上使用@DirtiesContext 注解。
默认情况下,这将在整个测试类运行后将应用程序上下文标记为脏。如果您想在单个测试方法之后将上下文标记为脏,那么您可以对测试方法进行注释,或者在您的类级别注释中将 classMode 属性设置为 AFTER_EACH_TEST_METHOD。
@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)
关于java - 每次测试后重新加载 Spring 应用程序上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13288029/