【问题标题】:testng execution ordertestng 执行顺序
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 是的,但这些不是单元测试(“为什么?因为它们是集成测试并且使用数据库”)
【解决方案2】:

如果您希望您的类/方法以可预测的顺序运行,那么您应该在 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>

【讨论】:

  • 该问题询问如何以一致且可预测的方式对测试进行排序。您的回答为“不可预知的顺序”提供了一种方法。
  • 已将值更改为“true”
猜你喜欢
  • 2011-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多