1

根据:https: //jira.spring.io/browse/SPR-4103 SpringJUnit4ClassRunner 在测试后不会总是调用 DisposableBean.destroy (*facepalm*!) - 由于 JUnit 的实现问题。

这仍然是真的吗?

我在 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 仍然无法做到这一点,是否有一个测试框架会在每次测试后自动调用上下文清理?

4

1 回答 1

2

尝试添加到班级

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

那会成功的。

于 2015-03-04T03:42:06.613 回答