6

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

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

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

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

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

那张照片可以更好地解释我的问题: 在此处输入图像描述

4

1 回答 1

7

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

  • 是否存在经受住考验的 Thread?
  • 所有 Executors 都关闭并终止了吗?
  • 测试后文件或流是否仍然打开?
  • 测试后是否清除/重新初始化测试类中的所有字段?
  • 避免使用静态引用或单例
  • 不要在您的测试方法中释放资源,仅在拆卸方法中。否则,异常可能会使这段代码无法访问。
于 2013-03-05T20:50:51.807 回答