JUnit5+Cucumber7环境下Serenity报告显示0测试执行问题排查
排查Serenity报告显示0测试的核心问题
1. 依赖组合是否正确匹配
Cucumber 7 + JUnit 5 + Serenity的整合需要严格对应版本的依赖,常见错误是混用旧版依赖:
- 必须引入
serenity-cucumber7(而非旧的serenity-cucumber),版本要和serenity-core保持一致 - 确保包含
cucumber-junit-platform-engine,这是Cucumber在JUnit5平台运行的核心依赖 - 移除JUnit4相关依赖(比如
junit:junit、cucumber-junit),避免版本冲突 - 示例依赖片段:
<dependency> <groupId>net.serenity-bdd</groupId> <artifactId>serenity-core</artifactId> <version>3.9.0</version> <scope>test</scope> </dependency> <dependency> <groupId>net.serenity-bdd</groupId> <artifactId>serenity-cucumber7</artifactId> <version>3.9.0</version> <scope>test</scope> </dependency> <dependency> <groupId>io.cucumber</groupId> <artifactId>cucumber-junit-platform-engine</artifactId> <version>7.14.0</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.platform</groupId> <artifactId>junit-platform-suite-api</artifactId> <version>1.10.0</version> <scope>test</scope> </dependency>
2. Runner类是否使用Serenity专属注解
JUnit5下不能再用JUnit4的@RunWith,也不能用普通的Cucumber @Cucumber注解,必须使用Serenity提供的@SerenityCucumberTest来标记测试类,这样Serenity才能捕获到Cucumber的测试执行数据:
import net.serenitybdd.cucumber.suiteslicing.SerenityCucumberTest; @SerenityCucumberTest public class TestRunner { }
如果用了普通的@Cucumber或@Suite注解,Serenity无法关联测试执行记录,自然报告显示0测试。
3. Maven插件配置是否适配JUnit5平台
Maven Surefire/Failsafe插件需要明确配置为使用JUnit5平台,否则可能无法正确识别测试类,导致Serenity拿不到执行数据:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.2.2</version> <configuration> <includes> <include>**/*TestRunner.java</include> </includes> <provider>org.apache.maven.surefire.junitplatform.JUnitPlatformProvider</provider> </configuration> </plugin>
另外,要确保插件版本足够新,支持JUnit5平台的特性。
4. Serenity配置是否正确
检查src/test/resources/serenity.properties中的关键配置:
- 确保
serenity.test.root指向你的测试源码目录(默认是src/test/java,如果测试在其他目录需要手动调整) - 确认没有设置
serenity.reporting.disable=true这类禁用报告的配置 - 可以添加
serenity.cucumber.track.all.steps=true强制Serenity跟踪所有测试步骤
5. 验证Maven执行时的测试类扫描
查看Maven执行输出,确认是否扫描到了你的TestRunner类,并且有测试步骤被执行的日志。如果日志里显示"Tests run: 0",说明Surefire插件没找到测试类;如果有执行步骤但Serenity报告还是0,说明Serenity没捕获到数据,大概率是Runner注解或依赖的问题。
内容的提问来源于stack exchange,提问作者MR. PROD
相关产品推荐
相关产品推荐

