Maven环境下Cucumber HTML报告无法生成问题求助
问题描述
我反复检查了POM.XML和TestRunner.java的配置,执行mvn clean verify命令时cucumber.json能正常生成,但Cucumber HTML报告始终无法生成,对应的文件夹都不存在。已经排查两天仍未解决,求排查思路。
提供的配置文件
POM.XML配置
<?xml version="1.0" encoding="UTF-8"?> <modelVersion>4.0.0</modelVersion> <groupId>com.xxx</groupId> <artifactId>restassured-bdd</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <!-- Cucumber --> <dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-java</artifactId> <version>7.16.1</version> </dependency> <dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-junit</artifactId> <version>7.16.1</version> </dependency> <!-- JUnit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency> <!-- REST Assured --> <dependency> <groupId>io.rest-assured</groupId> <artifactId>rest-assured</artifactId> <version>5.4.0</version> <scope>test</scope> </dependency> <!-- Hamcrest --> <dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest</artifactId> <version>2.2</version> <scope>test</scope> </dependency> <!-- Jackson --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.15.2</version> </dependency> <dependency> <groupId>io.cucumber</groupId> <artifactId>messages</artifactId> <version>24.1.0</version> </dependency> </dependencies> <build> <plugins> <!-- Test runner --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.2.5</version> <configuration> <includes> <include>**/TestRunner.java</include> </includes> </configuration> </plugin> <!-- Cucumber HTML Reporter --> <plugin> <groupId>net.masterthought</groupId> <artifactId>maven-cucumber-reporting</artifactId> <version>5.7.6</version> <executions> <execution> <id>generate-cucumber-report</id> <phase>verify</phase> <goals> <goal>generate</goal> </goals> <configuration> <projectName>restassured-bdd</projectName> <outputDirectory>${project.build.directory}/cucumber-html-reports</outputDirectory> <inputDirectory>${project.build.directory}/cucumber</inputDirectory> <jsonFiles> <param>**/*.json</param> </jsonFiles> </configuration> </execution> </executions> </plugin> </plugins> </build>
TestRunner.java代码
@RunWith(Cucumber.class) @CucumberOptions( features = "src/test/resources/features", glue = "stepdefinitions", plugin = {"pretty", "json:target/cucumber/cucumber.json"}, monochrome = true ) public class TestRunner {}
排查思路
- 验证插件执行流程:
先单独执行mvn test确认测试正常运行、json文件生成,再执行mvn verify -DskipTests,观察报告插件是否触发执行(即使无json文件,至少能看到插件尝试运行的日志)。 - 核对路径配置准确性:
- 确认
inputDirectory指向的target/cucumber目录下确实存在cucumber.json;可以手动打印${project.build.directory}的实际路径,验证是否与预期一致。 - 把
jsonFiles的匹配规则从**/*.json改为*.json,避免多层目录匹配逻辑导致找不到文件。
- 确认
- 检查版本兼容性:
Cucumber 7.16.1与maven-cucumber-reporting 5.7.6可能存在适配问题,查看插件官方版本适配表,尝试升级插件到最新稳定版,或降级到明确兼容的版本。 - 开启Maven调试日志:
执行mvn clean verify -X,搜索maven-cucumber-reporting相关日志,确认插件是否被触发、是否有明确报错(如文件找不到、权限不足、依赖缺失等)。 - 排查权限与目录问题:
手动创建target/cucumber-html-reports目录,再执行命令,排除权限不足导致的文件夹无法创建问题。 - 检查依赖冲突:
执行mvn dependency:tree查看依赖树,排查是否存在cucumber、jackson等相关依赖的版本冲突,必要时排除冲突依赖。 - 直接触发插件目标:
跳过Maven生命周期,直接执行报告插件命令:mvn net.masterthought:maven-cucumber-reporting:generate,观察控制台输出的错误信息,定位问题。
内容的提问来源于stack exchange,提问作者Luke_Nuke
相关产品推荐
相关产品推荐

