什么可能导致我的TestNG测试方法消失'何时启用并行?

时间:2017-01-09 02:35:09

标签: testng

TLDR - 当我运行一个启用了并行的大型硒测试套件时,一堆测试方法会消失' - 它们不再被报告为通过,失败或跳过,似乎已经消失了。我希望有人能够就如何解决问题向我提供一些建议。

当我正常运行我的测试装置时,大约需要10个小时(ergh),只有不到800个单独的测试。它通常通过maven和surefire运行,使用类似这样的suite.xml文件......

<suite name="MainSuite" time-out="1800000" verbose="10">
  <listeners>
    <listener class-name="com.example.selenium2webdriver.testng.listener.StatsdSuiteListener"/>
  </listeners>
  <test name="AllTests">
    <groups>
      <run>
        <exclude name="windowsonly"/>
        <exclude name="upgrade"/>
      </run>
    </groups>
    <packages>
      <package name="com.example.selenium.*"/>
      <package name="com.example.selenium2webdriver.tests.*"/>
    </packages>
  </test>
</suite>

我得到一个surefire-reports / testng-results.xml文件,该文件以这样的内容开头......

<testng-results skipped="7" failed="8" total="789" passed="774">
  <reporter-output></reporter-output>
  <suite name="MainSuite" duration-ms="35693671" started-at="2016-12-28T08:49:22Z" finished-at="2016-12-28T18:44:16Z">

现在,问题。如果我将parallel="methods" thread-count="2"添加到套件声明中以期加快整体运行时间,我现在在surefire-reports / testng-results.xml文件的顶部看到以下内容......

<testng-results skipped="5" failed="9" total="45" passed="31">
  <reporter-output></reporter-output>
  <suite name="MainSuite" duration-ms="1818150" started-at="2017-01-08T08:50:25Z" finished-at="2017-01-08T09:20:43Z">

当然,它的速度要快得多,但突然之间,我只看到大约5%的测试被报告(并且查看目标机器表明丢失的测试实际上没有被运行)。

所以,毕竟我的问题是,当我启用并行模式时,我怎么能确保我的所有测试仍然运行?&#39;?或者,如果没有一个简单的答案,我怎么能进一步解决这个问题,或者解决我的设置中的问题,或者将其提炼成可以报告的可重现的bug。

一些随机的其他背景/信息,以防他们相关/有帮助。

我正在使用TestNG 6.10,(并且还在6.9.10上看到了这一点。)

为了能够提供更可重复的示例,我使用javaparser来删除所有实际的测试方法内容(留下注释等)。生成的测试集只需几秒钟即可完成所有操作,无论并行配置如何,都不会再出现问题。我想这表明问题是时间特定的,或者测试中的某些东西本身就会触发问题。

并行运行的具体测试不一致,计数也不一致。在几次运行中,我发现最多总共达到100左右。

仔细观察surefire-reports / testng-results.xml文件,/ testng-results / suite / groups / group似乎确实列出了测试方法...例如,我看到......

<group name="DeleteCollectionCLI">
  <method signature="DeleteCollectionCLI.deleteCollectionfromCLI()[pri:0, instance:com.example.selenium.cli.DeleteCollectionCLI@e3c0e40]" name="deleteCollectionfromCLI"class="com.example.selenium.cli.DeleteCollectionCLI"/>
</group>
<!--  DeleteCollectionCLI  -->

...但是该类和该方法都没有在结果的/ testng-results / suite / test部分下表示

0 个答案:

没有答案