根据:https://jira.spring.io/browse/SPR-4103 由于JUnit的实现问题,SpringJUnit4ClassRunner在测试(* facepalm *!)之后不会总是调用DisposableBean.destroy。
这仍然是真的吗?
我在scala中创建测试,如下所示:
@RunWith(classOf[SpringJUnit4ClassRunner])
@WebAppConfiguration
@ContextConfiguration(classes = Array(classOf[Service1Config]))
class Service1Test {
@Test
def test1(): Unit = {
}
}
@RunWith(classOf[SpringJUnit4ClassRunner])
@WebAppConfiguration
@ContextConfiguration(classes = Array(classOf[Service2Config]))
class Service2Test {
@Test
def test2(): Unit = {
}
}
我发现在执行Service2Test时Service1Config中的bean的destroy方法没有被销毁。
我发现很多文章建议添加@After以明确关闭上下文。这听起来像是一个等待发生的错误(因为如果你忘记在一次测试中添加@After清理,下一个测试类将失败,你将不知道为什么)。
如果仍然无法使用SpringJUnit4ClassRunner / JUnit,那么是否有一个测试框架会在每次测试后自动调用上下文清理?
答案 0 :(得分:1)
尝试添加到课程
@DirtiesContext(classMode=ClassMode.AFTER_CLASS)
class Service1Test {
这样就可以了。