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

标签 java junit junit4

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

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

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

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

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

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

最佳答案

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

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

关于java - 由于方法名称,JUnit 测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15232241/

相关文章:

java - .class 文件中的版本号错误。在 Jdev 10.1.3.4.0 中嵌入的 oc4j

java - 将 2 位小数转换为整数

java - 如何在读取第一行后中断 POI 流式读取器?

java - JUnit 测试 public boolean equals(Object obj)

java - 静态方法有点代码味道?

java - 如何解决以下导入问题?

java - JdbcTemplate.queryforList() 返回值但 map.get 返回 null

java - 将 PowerMockRunner 与 LocalDate 类一起使用来模拟今天的日期

java - HttpSession 联合测试

java - mvn 测试 java.lang.OutOfMemoryError : unable to create new native thread