我正在通过Jenkins使用Junit执行我的Selenium WebDriver测试,测试执行本身在Sauce Labs上运行。我的测试在我们公司的网站上运行,该网站存在于许多国家/地区,因此我为maven创建了执行配置文件,以便在所有域或单个特定域上运行测试。我的POM for surefire和profile看起来像这样:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<parallel>all</parallel>
<threadCount>10</threadCount>
<groups>${testcase.groups}</groups>
</configuration>
</plugin>
<profile>
<id>all</id>
<properties>
<testcase.groups>categories.AllDomains</testcase.groups>
</properties>
</profile>
<profile>
<id>germany</id>
<properties>
<testcase.groups>categories.Germany</testcase.groups>
</properties>
</profile>
<profile>
<id>poland</id>
<properties>
<testcase.groups>categories.Poland</testcase.groups>
</properties>
</profile>
所有测试都使用必要的@Category类别进行了正确标记。 如果我选择单个域并运行测试,则会执行所有测试并在Jenkins中正确显示Total Tests / Failed Tests。
但如果我在所有域上运行测试,Jenkins每次都会向我显示不同数量的总测试/失败测试。因此,我从每个版本获得的反馈是不同的,并且完全不可实现,因为与Sauce Labs上的执行相比,失败的测试不正确(Sauce Labs也有不断的总测试/失败测试)。
链接中的图像显示我的Jenkins Test Graph,标记的部分都具有相同的执行配置,可以在所有域上运行,但执行的测试数量完全不同。
感谢Sauce Labs,我知道配置文件指定的所有测试都在运行,您可以在Image中看到总测试的数量是一致的。
到目前为止,我检查了所有代码和Jenkins配置10次,找不到原因,为什么会发生这种情况。那么为什么Jenkins没有显示实际结果呢? 如果我进入执行数据并检查每个类,我可以看到它添加并删除每个域的随机测试(但仍然在Sauce Labs上执行它们),没有模式,没有重复!
PS:配置文件和域名执行的配置暂时没有改变,这个问题一无所获(没有更新Selenium代码,Jenkins插件,Jenkins本身)
答案 0 :(得分:0)
经过一些测试后,我发现Surefire中的并行测试执行存在问题。似乎正在运行parallel=all
开始切断报告XML,而Jenkins没有收到所有执行测试的反馈。
当我使用parallel=all
来缩短整体测试执行时间时,我调查forkCount
以保持我的时间不低{{1}}。
所以我的POM中的新Surefire配置现在看起来像这样:
parallel=all
测试执行时间仍然很短,但所有报告都已完成,Jenkins正在显示正确的结果!