在测试之后,SpringJUnit4ClassRunner是否仍然无法可靠地调用DisposableBean.destroy

时间:2015-03-04 02:17:28

标签: spring junit spring-ioc springjunit4classrunner

根据: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,那么是否有一个测试框架会在每次测试后自动调用上下文清理?

1 个答案:

答案 0 :(得分:1)

尝试添加到课程

@DirtiesContext(classMode=ClassMode.AFTER_CLASS)
class Service1Test {

这样就可以了。