由于方法名称,JUnit测试失败

时间:2013-03-05 19:16:21

标签: java junit junit4

为什么测试方法的名称可能影响其他测试?

我有一个包含2类测试的套件,当我更改class1的方法名时,我在class2中的测试是正常的(绿色)。

我注意到这两个类都有一个同名的方法,但失败的测试不是这些。但是,如果我重命名它们,所有测试都可以。

在不同的类中有两个同名的方法,但在同一套件中是否可以?而另一个测试随机失败的事实只是一个巧合?

ps:重命名该方法后,测试运行顺序发生了变化。 ps2:抱歉我的英语不好。

这张照片可以更好地解释我的问题: enter image description here

1 个答案:

答案 0 :(得分:7)

JUnit中没有错误!我们的团队经历了类似的结果,这是由不合理的资源管理引起的。您可以尝试重命名失败的测试,以便首先执行它们。它们现在应该变为绿色,这主要表明资源是在测试之间意外共享的。在这种情况下,您可以尝试在拆除中释放资源(@After)。 这是一个找到原因的小清单:

  • 是否有线程可以在测试中存活下来?
  • 是否所有Executors都关闭并终止?
  • 测试后文件或流是否仍然打开?
  • 测试后是否清除/重新初始化测试类中的所有字段?
  • 避免使用静态引用或单例
  • 不要在测试方法中释放资源,只能在拆卸方法中使用。否则,异常可能会使这段代码无法访问。