当前位置: 首页 > 知识库问答 >
问题:

cucumber.json报告被重新运行方案报告覆盖

冀耀
2023-03-14

我使用maven-surefire-plugin内置功能 1 使用了Flaky测试重新运行机制。此外,我还基于 io.cucumber 而不是 info.cukes 添加了cucumber依赖项。它们都有自己版本的cucumber-java和cucumber-jvm依赖项。

<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 {
}

但我不需要有这个第二个跑者,因为重新运行机制工作绝对出色,只有一个跑者在顶部。maven-surefire插件(V2.21.0)和io.cucumberV2.4.0中的内置机制可以很好地工作,如果第一次执行时任何场景失败,它会自动重新运行,而不需要将其记录在rerun.txt文件中。

我的功能文件中有5个场景。如果他们第一次都通过了。它成功地生成了带有cucumber.json报告的报告,其中显示了所有5种场景。但是,如果(比方说)5个场景中有2个失败,并且这些场景在重新运行机制中自动执行,cucumber.json报告文件只记录这两个场景的结果,而不是所有5个场景的结果。如果这两个场景在重新运行中通过,则整个构建通过;如果这两个场景失败,则整个构建失败。这是正确的,但我的问题是cucumber.json被rerun机制覆盖。我尝试使用maven-cucumber-reporting插件V_3.16.0,但它实际上读取了cucumber.json文件本身,因此无法解决我的问题。如有任何帮助,我们将不胜感激。

共有1个答案

慕容宏邈
2023-03-14

好消息是你没做错什么!

坏消息是,你所观察到的结果完全和预期的一样。这是链接不同工具(surefire-->junit-->cucumber)的自然结果,否则这些工具彼此不知道。从Cucumber的角度来看,重新运行似乎是一个全新的执行,因此它将很高兴地覆盖旧的报告。只有在链的开始,才有可能创建准确的报告。

因此,您的选择从最小到最大的努力和最差到最好的质量是:

 类似资料:
  • 您是否曾被测试覆盖度量引入歧途? 测试覆盖工具对单元测试具有重要的意义,但是经常被误用。这个月,Andrew Glover 会在他的新系列 —— 追求代码质量 中向您介绍值得参考的专家意见。第一部分深入地介绍覆盖报告中数字的真实含义。然后他会提出您可以尽早并经常地利用覆盖来确保代码质量的三个方法。 您还记得以前大多数开发人员是如何追求代码质量的吗。在那时,有技巧地放置 main() 方法被视为灵活

  • 我在尝试使用Maven Reporting Mojo运行CucumberJVM测试时遇到以下错误。 [INFO]---maven-cucumber-报告:0.0.5:生成(执行)@testproject---关于生成java.io.FileNotFoundExc0019: /Users//ideaProjects/testproject/Target/cucumber.json(没有这样的文件或目

  • v2.0 Codecov报表 , 从2017-12-29后开始统计 测试覆盖率为 : , 可以从 https://codecov.io/gh/apache/dubbo 页面得到覆盖率报表 v1.0 基于 2.0.12 版本,统计于 2012-02-03

  • 我正在从. jasper文件加载jasper报告文件以提高性能,如下所示。 但是我现在有一个要求,动态形成的查询必须设置为. jasper(编译)文件。有没有办法做同样的事情?

  • 在一个配置了多个应用项目和多个 Library 项目的多项目里,当同时运行所有测试的时候,测试结果整合到一份测试报告中可能是非常有用的。 为了实现这个目的,需要在同一个配置中添加另一个插件。可以通过以下方式添加: buildscript { repositories { jcenter() } dependencies { classpath

  • 报告用于跟踪和分析整个项目中团队的绩效。Jira有一系列报告,显示有关您的项目,版本,冲刺,史诗和问题的信息。 以下是报告生成的报告: 平均时长报告 平均时长报告显示项目或过滤器未解决问题的平均时长。它可以帮助您显示积压是否保持最新。 基本上,它找到问题未解决的平均天数。 生成平均时长告,该报告取决于所选项目,过滤器中选择的问题类型以及时间(小时/天/周/月)。 平均时长报告如下所示: 上面的屏幕