我的测试在eclipse和jenkins中以不同的顺序执行。我希望结果与环境相同且独立。测试并不平行。我不关心specyfing命令,我只是希望它们始终以相同的顺序运行。
为什么呢?因为它们是集成测试并且它们使用数据库。有时它们相互影响,很难完全隔离它们。因此,如果它们失败了,我至少要让它们无处不在,以便更容易修复,而无需远程调试jenkins ......
编辑: 这是我在日食中获得的顺序的一个例子:
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中没有提供特定的测试方法列表。上面的顺序是随机的。
答案 0 :(得分:0)
理想情况下,您不应该依赖于单元测试的排序。每个测试应该彼此独立。按照这种理念,JUnit
并不保证单元测试的任何特定执行顺序。您可以查看支持按特定顺序执行测试的TestNG。
答案 1 :(得分:0)
如果您希望您的类/方法以可预测的顺序运行,那么您应该使用TestNG中的preserve-order
属性。
<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>