You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 09:25:13