0

我的测试在 eclipse 和 jenkins 中以不同的顺序执行。我希望结果是相同的,并且独立于环境。测试不是平行的。我不在乎指定顺序,我只希望它们始终以相同的顺序运行。

为什么?因为它们是集成测试并且它们使用数据库。有时它们会相互影响,很难完全隔离它们。因此,如果他们失败了,我希望至少让他们在任何地方都失败以使修复更容易,而无需远程调试詹金斯......

编辑:这是我在 Eclipse 中获得的顺序的一个示例:

2013-01-22 14:39:06,186 main INFO  category  - Starting test A.a
2013-01-22 14:39:06,547 main INFO  category  - Starting test B.a
2013-01-22 14:39:10,614 main INFO  category  - Starting test C.a
2013-01-22 14:39:11,983 main INFO  category  - Starting test D.a
2013-01-22 14:39:12,492 main INFO  category  - Starting test D.b
2013-01-22 14:39:12,889 main INFO  category  - Starting test A.b
2013-01-22 14:39:13,657 main INFO  category  - Starting test A.c
2013-01-22 14:39:18,626 main INFO  category  - Starting test D.c
2013-01-22 14:39:19,041 main INFO  category  - Starting test A.d
2013-01-22 14:39:19,756 main INFO  category  - Starting test A.e
2013-01-22 14:39:20,724 main INFO  category  - Starting test D.e
2013-01-22 14:39:21,515 main INFO  category  - Starting test A.f

我在测试套件 xml 中使用组(实际上,在这个特定的套件中,我运行除某些组之外的所有组)。xml 中没有提供特定的测试方法列表。上面的顺序是相当随机的。

4

2 回答 2

0

理想情况下,您不应该依赖单元测试的顺序。每个测试应该彼此独立。按照这种理念,JUnit不保证单元测试的任何特定执行顺序。您可以查看支持以特定顺序执行测试的TestNG 。

于 2013-01-22T13:50:14.387 回答
0

如果您希望您的类/方法以可预测的顺序运行,那么您应该使用preserve-orderTestNG 中的属性。

 <suite name="Preserve order test runs">
   <test name="Test 1" preserve-order="true">
    <classes>
     <class name="com.ClassOne"/>
     <class name="com.ClassTwo"/>
     <class name="com.ClassThree"/>
    </classes>
   </test>
 </suite>
于 2017-06-15T15:11:40.660 回答