【发布时间】:2016-05-14 16:03:03
【问题描述】:
我使用JUnit4 编写了两个单元测试类。它们都单独运行良好,但一个接一个地运行它们(例如通过 mvn 测试),第二个测试失败。
第二个测试失败的原因是第一个测试在第一个测试中修改了一个 bean。第二个测试想要使用这个 bean 的新实例。
单元测试应该为每个单元测试类赋予一个新的上下文。 Spring 对我想禁用的上下文缓存具有一流的支持。如何配置Spring 为每个单元测试类重新启动一个新的Context?
我的测试类是这样配置的:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:a.context.xml")
public class AUnitTest {
@Test
public void someTestMethod{
doSomeFancyStuff();
}
}
【问题讨论】:
-
我不再使用 Spring 进行单元测试。单元测试不应该需要依赖注入;我想使用模拟。 Spring factory 启动时间过长。
-
只是为了让其他阅读本文的人清楚:以上内容不是单元测试。根据定义,它是一个集成测试,因为它正在加载 Spring
ApplicationContext。 -
当您说“Spring 尝试优化它”时,您指的是 Spring 对上下文缓存的一流支持,恰好在 reference manual 中有完整记录。跨度>
-
我用这些附加信息调整了原始帖子
标签: java spring unit-testing spring-test springjunit4classrunner