Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JUnit测试因方法名称而失败_Java_Junit_Junit4 - Fatal编程技术网

Java JUnit测试因方法名称而失败

Java JUnit测试因方法名称而失败,java,junit,junit4,Java,Junit,Junit4,为什么测试方法的名称可能会影响其他测试 我有一个包含两个测试类的套件,当我更改方法名class1时,我在class2中的测试是ok(绿色) 我注意到这两个类都有一个同名的方法,但是测试失败的不是这两个类。但是,如果我重命名其中任何一个,所有测试都可以 在不同的类中,但在同一个套件中,有两个同名的方法可以吗?而另一个测试随机失败的事实只是巧合 ps:在我重命名该方法后,运行测试的顺序发生了变化。 对不起,我的英语不好 这张照片可以更好地解释我的问题: JUnit中没有bug!我们的团队经历了类似的

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

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

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

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

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

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

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

这些测试是否设计得很好,可以按任何顺序运行?是否有任何状态可以依赖于它们运行的顺序?问题可能是执行的顺序,而不是测试的名称。其中一个(或多个)测试可能会更改另一个测试的状态。闻起来像是测试隔离失败,当一个测试依赖于另一个测试的副作用时,它被称为测试隔离失败,因此要求它们按特定顺序运行。