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

针对Cucumber测试和maven Cucumber报告的正确maven pom配置

东郭臻
2023-03-14

我在以前的项目中使用过这个,但现在找不到。。。

我正在使用Maven构建java应用程序,并在构建过程中对该应用程序运行测试。我正在使用maven cucumber reporting插件v3.0.0来编写一份结果报告。

我想:

  1. 运行cucumber测试
  2. 生成报告(无论测试是否失败)
  3. 如果生成报告失败,则在生成报告后使生成失败

我如何使用maven surefire插件、maven cucumber reporting插件和任何其他插件的组合来设置pom以使其工作?

更新1:

以下是我当前的pom配置:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19.1</version>
            <configuration>
                <testFailureIgnore>true</testFailureIgnore>
            </configuration>
        </plugin>
        <plugin>
            <groupId>net.masterthought</groupId>
            <artifactId>maven-cucumber-reporting</artifactId>
            <version>${cucumber.reporting.version}</version>
            <executions>
                <execution>
                    <id>execution</id>
                    <phase>verify</phase>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                    <configuration>
                        <projectName>${project.artifactId}</projectName>
                        <outputDirectory>${project.basedir}/src/test/report/cucumber-reports</outputDirectory>
                        <cucumberOutput>${project.basedir}/src/test/report/cucumber.json</cucumberOutput>
                        <skippedFails>true</skippedFails>
                        <enableFlashCharts>false</enableFlashCharts>
                        <buildNumber>${project.version}</buildNumber>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>com.coderplus.maven.plugins</groupId>
            <artifactId>copy-rename-maven-plugin</artifactId>
            <version>1.0</version>
            <inherited>false</inherited>
            <executions>
                <execution>
                    <id>copy-file</id>
                    <phase>test</phase>
                    <goals>
                        <goal>copy</goal>
                    </goals>
                    <configuration>
                        <sourceFile>${project.basedir}/src/test/report/cucumber.json</sourceFile>
                        <destinationFile>${project.parent.basedir}/src/test/report/cucumber-${project.artifactId}-${project.version}.json</destinationFile>
                    </configuration>
                </execution>
            </executions>
        </plugin>

如何让Cumber测试在maven surefire plugin期间运行,在maven Cumber reportingcopy rename maven plugin插件运行以生成报告并将其放置在正确的位置(我在父级聚合测试的多模块pom)之前不失败,然后使构建失败?

目前情况1和2通过(我的Cucumber测试运行、失败,然后生成报告,但构建没有失败)。

也许更一般地说,我如何作为maven构建的一部分运行测试,然后执行一些报告插件,然后在报告插件运行后使构建失败?

共有1个答案

葛景龙
2023-03-14

我已经在运行程序中成功地使用了format={“pretty”,“html:target/Destination”},如tutorialpoint的示例所示

 类似资料:
  • 22.13.7.测试报告 测试任务默认生成以下结果. 一份HTML测试报告 一个与Ant的JUnit测试报告任务兼容的XML.这个格式与许多其他服务兼容,如CI serves 结果是有效的二进制,测试任务会从这些二进制结果生成其他结果。 有一个独立的TestReport任务类型会根据一些Test任务实例生成的二进制源码生成一个HTML报告.使用这种测试类型,需要定义一个destinationDir

  • 当运行单元测试的时候,Gradle 会输出一份 HTML 格式的报告以方便查看结果。Android plugin 则将所有连接设备的测试报告都合并到一个 HTML 格式的报告文件中。所有测试结果都以 XML 文件形式保存到 build/reports/androidTests/ 中(类似于 JUnit 的运行结果保存在 build/reports/tests 中)。可以自定义路径: android

  • 5.4 测试报告 当运行单元测试的时候,Gradle 会生成一份 HTML 报告以便于查看测试结果。 Android plugins 在这个基础上扩展了 HTML 报告,以合并所有已连接设备上的测试结果。 5.4.1 单工程报告 在运行测试的时候工程会自动的生成报告,默认位置是: build/reports/androidTests 这和 jUnit 报告的位置 build/reports/tes

  • 背景资料: Maven版本:3.2.5 Java版本:1.8 cucumber报告版本:3.8.0 我有一个多模块maven java项目。我有cucumber测试和maven cucumber reporting插件,为每个模块运行和工作。 问题:我想在所有子模块构建完成后,生成一个包含所有cucumber.json文件的大型报告。 我可以吗: 在所有子模块构建和测试(创建cucumber.js

  • 22.13.7.1.TestNG 的参数化方法和报告 TestNG支持参数化方法,允许一个特定的测试方法使用不同的输入被执行多次。Gradle会在测试报告中包含该方法的参数值. 给出一个叫aTestMethod的测试方法,该方法有两个参数,在测试报告中会根据名字报告:aTestMethod(toStringValueOfParam1, toStringValueOfParam2). 这很容易识别的

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