我有一个包含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批注。
Java文档
Spring文档
默认情况下,这将在整个测试类运行之后将应用程序上下文标记为脏。如果要在使用单个测试方法后将上下文标记为脏,则可以对测试方法进行注释,也可以在类级别的注释中将classMode属性设置为AFTER_EACH_TEST_METHOD。
@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)