【发布时间】:2013-01-22 12:49:56
【问题描述】:
我的测试在 eclipse 和 jenkins 中以不同的顺序执行。我希望结果是相同的,并且独立于环境。测试不是平行的。我不在乎指定顺序,我只是希望它们始终以相同的顺序运行。
为什么?因为它们是集成测试并且它们使用数据库。有时它们会相互影响,很难完全隔离它们。因此,如果他们失败了,我希望至少让他们在任何地方都失败,以便更轻松地进行修复,而无需远程调试 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 中没有提供特定的测试方法列表。上面的顺序很随意。
【问题讨论】:
-
In TestNG documentation: 默认情况下,TestNG 将按照它们在 XML 文件中的顺序运行您的测试。如果您希望此文件中列出的类和方法以不可预测的顺序运行,请将 preserve-order 属性设置为 false。
-
@DonRoby 此链接无关,我明确提到任何顺序都适合我,只要它在不同环境中保持一致即可。
-
如果可以指定顺序,就一致了。因此,该链接当然不是不相关的。我接受它可能不是一个确切的重复。
-
好吧,也许吧。但是来自该链接的建议对我不起作用。优先级不适用于跨类(我认为它只订购给定类中的方法)。 dependsOnMethods 也有同样的问题 - 如果 b() 依赖于 a() 执行通常如下所示:a()、OtherClass.x()、b()。
标签: java testing continuous-integration integration-testing testng