Java JUnit4套件被忽略(Eclipse和Maven)
我有两个测试类和一个初始化一些公共资源的套件。在所有类中都有用Java JUnit4套件被忽略(Eclipse和Maven),java,eclipse,maven,junit,Java,Eclipse,Maven,Junit,我有两个测试类和一个初始化一些公共资源的套件。在所有类中都有用@BeforeClass注释的方法-套件和两个测试类,只有套件中才有@AfterClass 当我从Eclipse中作为一个单独的测试类运行一套测试时,它工作得很好,但是当我尝试运行项目中的所有测试时,顺序是无效的。出于某种原因,Eclipse尝试先运行测试(由于资源尚未初始化而失败),然后才运行套件本身。 马文似乎也忽视了这件诉讼。我如何配置Maven和Eclipse以正确的顺序(首先适合)运行测试,而不是从套件外部运行这些测试 这不
@BeforeClass
注释的方法-套件和两个测试类,只有套件中才有@AfterClass
当我从Eclipse中作为一个单独的测试类运行一套测试时,它工作得很好,但是当我尝试运行项目中的所有测试时,顺序是无效的。出于某种原因,Eclipse尝试先运行测试(由于资源尚未初始化而失败),然后才运行套件本身。
马文似乎也忽视了这件诉讼。我如何配置Maven和Eclipse以正确的顺序(首先适合)运行测试,而不是从套件外部运行这些测试
这不是代码复制的问题。问题在于无法连续快速初始化和销毁的资源。这就是为什么我需要一个只初始化资源一次的套件
谢谢。在每个测试类中添加带有@BeforeClass和@AfterClass的代码
如果您有许多类要测试,请将测试套件抽象化,并确保所有需要tre逻辑的类都继承自测试套件。将带有@BeforeClass和@AfterClass的代码放在每个测试类别中
如果您有许多类要测试,请将测试套件抽象化,并确保所有需要tre逻辑的类都继承自测试套件。您使用套件进行拆卸会导致问题,原因有很多,但具体来说,您无法预测Eclipse(或Maven)的顺序将执行您的测试。要获得更全面的解释,请参阅我的答案,但由于Eclipse和maven是通过反射(注释)查找类的,因此您无法保证类的查找顺序。[*您可以使用maven和runOrder,请参见下面的第3点] Eclipse(和Maven)将套件视为测试,它是通过相同的机制发现和运行的,它们的执行顺序高度依赖于JVM 因此,如果您有套件A(其中包含测试B和C)和测试D,那么您将执行以下操作(以不可预测的顺序): 通常,您应该尝试保持对称,在同一位置进行设置/拆卸 因此,您有以下选项:
您使用套件进行拆卸会给您带来问题,原因有很多,但具体来说,您无法预测Eclipse(或Maven)执行测试的顺序。要获得更全面的解释,请参阅我的答案,但由于Eclipse和maven是通过反射(注释)查找类的,因此您无法保证类的查找顺序。[*您可以使用maven和runOrder,请参见下面的第3点] Eclipse(和Maven)将套件视为测试,它是通过相同的机制发现和运行的,它们的执行顺序高度依赖于JVM 因此,如果您有套件A(其中包含测试B和C)和测试D,那么您将执行以下操作(以不可预测的顺序): 通常,您应该尝试保持对称,在同一位置进行设置/拆卸 因此,您有以下选项:
这并不是对你的问题的回答,但一般来说,你应该编写测试,这样每个测试都是独立的,这样测试就可以独立运行,这样顺序就不重要了,但在这种情况下,我不能多次初始化资源。是否可以检查资源是否已初始化,如果已初始化,是否可以跳过初始化?这不是对您问题的回答,但是一般来说,你应该编写测试,这样每个测试都是独立的,这样测试就可以独立运行,这样顺序就不重要了,但在这种情况下,我不能多次初始化资源。是否可以检查资源是否已初始化,如果已初始化,是否可以跳过初始化?请参阅更新。这不是代码重复的问题。请查看更新。这不是代码重复的问题。我明白你的意思。对诉讼没有真正的支持。那么我不明白,如果没有人知道如何正确地使用它,为什么Junit还要为它的支持而烦恼呢?此外,我不会称之为真正的扫描技术挑战
A (which will execute B & C)
B
C
D