Java-Cucumber.json报告被重新运行方案报告覆盖
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java-Cucumber.json报告被重新运行方案报告覆盖,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3576字,纯文字阅读大概需要6分钟。
内容图文
我有UI测试项目和具有相同技术栈(JAVA1.8,Cucumber-JVM,JUnit,Maven)的API测试项目,并且两个项目都向我展示了这个问题.可能是因为两者中都存在相同的依赖关系集.
我已经使用了使用maven-surefire-plugin内置功能< rerunFailingTestsCount> 1< / rerunFailingTestsCount>的Flaky测试重新运行机制.另外,我基于< groupId> io.cucumber< / groupId>添加了黄瓜依赖性.而不是< groupId> info.cukes< / groupId>.这两个都有自己的版本的cumulage-java和cumulage-jvm依赖项.
我的POM.XML看起来像这样.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.21.0</version>
<configuration>
<rerunFailingTestsCount>1</rerunFailingTestsCount>
</configuration>
<executions>
<execution>
<id>acceptance-test</id>
<phase>integration-test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<forkCount>1</forkCount>
<reuseForks>true</reuseForks>
<includes>
<include>**/*Runner.class</include>
</includes>
</configuration>
</execution>
</executions>
</plugin>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-spring</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-jvm</artifactId>
<version>2.4.0</version>
<type>pom</type>
</dependency>
仅运行者文件代码
@RunWith(Cucumber.class)
@ContextConfiguration(locations = {"file:/src/test/resources/spring-config.xml"})
@CucumberOptions(
glue = "com.test.uitest",
features = "classpath:cucumber",
tags = {"~@ignore","@ui_home"},
monochrome = true,
plugin = {"pretty", "html:target/cucumber-reports",
"json:target/cucumber-reports/cucumber.json",
"rerun:target/rerun.txt"} //Creates a text file with failed scenarios
)
public class AllTestsRunner {
}
现在,显然,我需要再有一个跑步者,里面有以下代码(根据StackOverflow上的其他论坛和主题)
@RunWith(Cucumber.class)
@CucumberOptions(
monochrome = true,
glue = "com.test.uitest",
features = "@target/rerun.txt", //Cucumber picks the failed scenarios from this file
format = {"pretty", "html:target/rerun-reports",
"json:target/cucumber-reports/rerun-report.json"}
)
public class FailedTestsRunner {
}
但是我并不需要第二名,因为重新运行机制绝对出色,只需要一个名列前茅.即使没有必要在第一个运行程序中生成rerun.txt文件.maven-surefire插件(v_2.21.0)和io.cucumber v_2.4.0的内置机制也可以完美运行,并且如果任何情况在第一个执行过程中失败,它会自动重新运行,而无需将其记录在rerun.txt文件中.
##问题在##
我的功能文件中有5个场景.如果所有这些都通过第一轮.它成功地使用了cumul.json报告生成了显示所有5种情况的报告.
但是,如果(例如)5个场景中有2个失败,并且这些场景在重新运行机制中自动执行,cumulative.json报告文件将仅记录这两个场景的结果,而不记录所有5个场景的结果.如果这两个方案通过重新运行,则总体构建通过;如果这两个方案失败,则构建失败.没错,但是我的问题是Cucumber.json被重新运行机制覆盖了.
我尝试使用maven-cucumber-reporting插件v_3.16.0,但是它实际上读取了cumber.json文件本身,因此无法解决我的问题.任何帮助,将不胜感激.
解决方法:
好消息是您没有做错任何事!
坏消息是您观察的结果完全符合预期.这是将不同的工具(Surefire-> JUnit-> Cucumber)链接在一起的自然结果,这些工具原本互不了解.从Cucumber的角度来看,重新运行似乎是全新的执行,因此很高兴会覆盖旧的报告.仅在链的开始,才可以创建准确的报告.
因此,从最小到最大的努力,从最坏的到最好的质量,您可以选择:
>使用Surefire生成的报告.
>编写自己的插件来附加结果,而不是覆盖它们.
>参与黄瓜项目,并从根本上帮助解决这一问题.
编辑:删除了使用cucumber-jvm-parallel-plugin为每种情况创建单独的单元测试的建议.这实际上是行不通的.
内容总结
以上是互联网集市为您收集整理的Java-Cucumber.json报告被重新运行方案报告覆盖全部内容,希望文章能够帮你解决Java-Cucumber.json报告被重新运行方案报告覆盖所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。