Spring Boot升级适配Junit5后Allure Jenkins报告显示NaN/UNKNOWN
Allure报告显示NaN%/UNKNOWN问题排查与修复
问题背景
将Spring Boot版本从2.1.3.RELEASE升级至2.6.6,同步完成JUnit4到JUnit5的迁移,测试代码结构和导入已适配JUnit5且功能运行正常,但Jenkins中生成的Allure报告全部显示为NaN%或UNKNOWN。已按照Allure官方文档调整pom.xml配置,但问题未解决,进一步发现data/test-cases目录不存在。
当前pom.xml关键配置如下:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.6</version> <relativePath/> </parent> <artifactId>user-service</artifactId> <packaging>jar</packaging> <properties> <aspectj.version>1.9.2</aspectj.version> </properties> <dependencies> <!-- 其他依赖省略 --> <dependency> <groupId>io.qameta.allure</groupId> <artifactId>allure-junit5</artifactId> <version>2.17.3</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.0</version> <configuration> <properties> <property> <name>listener</name> <value>io.qameta.allure.junit5.AllureJunit5</value> </property> </properties> <argLine> -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar" </argLine> <systemProperties> <property> <name>junit.jupiter.extensions.autodetection.enabled</name> <value>true</value> </property> <property> <name>allure.results.directory</name> <value>${project.build.directory}/allure-results</value> </property> </systemProperties> </configuration> </plugin> <plugin> <groupId>io.qameta.allure</groupId> <artifactId>allure-maven</artifactId> <version>2.11.2</version> <configuration> <reportVersion>2.14.0</reportVersion> </configuration> </plugin> </plugins> </build> </project>
Jenkins Allure插件版本为2.30.2。
核心原因分析
Allure组件版本不兼容:
allure-maven插件版本2.11.2过于老旧,与allure-junit52.17.3、Jenkins Allure插件2.30.2版本差距过大,导致结果文件解析失败,无法生成有效报告。reportVersion配置为2.14.0,与allure-junit52.17.3版本不匹配,进一步加剧兼容性问题。
Surefire插件配置冗余且版本过低:
- Spring Boot 2.6.x默认依赖的Surefire版本高于2.22.0,低版本插件可能对JUnit5的支持存在缺陷,导致Allure监听器无法正常捕获测试结果。
- JUnit5的Allure集成无需手动配置
listener,通过扩展自动检测即可,冗余配置可能引发冲突。
AspectJ版本兼容性问题:
- AspectJ 1.9.2与Spring Boot 2.6.x的依赖版本不匹配,可能导致JavaAgent无法正常工作,影响Allure的切面逻辑执行,无法生成测试结果文件(即
data/test-cases目录缺失的原因)。
- AspectJ 1.9.2与Spring Boot 2.6.x的依赖版本不匹配,可能导致JavaAgent无法正常工作,影响Allure的切面逻辑执行,无法生成测试结果文件(即
修复步骤
1. 统一Allure组件版本
将allure-maven插件版本升级至与allure-junit5匹配的版本(建议使用2.17.3),同时移除reportVersion配置(插件会自动适配对应版本的报告生成器):
<plugin> <groupId>io.qameta.allure</groupId> <artifactId>allure-maven</artifactId> <version>2.17.3</version> </plugin>
2. 优化Surefire插件配置
- 移除手动配置的
listener属性,JUnit5会自动识别Allure扩展; - 升级Surefire插件至Spring Boot 2.6.x兼容的版本(或直接继承Spring Boot父项目的默认版本);
- 简化配置:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <!-- 可省略版本,Spring Boot父项目已提供兼容版本 --> <configuration> <testFailureIgnore>false</testFailureIgnore> <argLine> -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar" </argLine> <systemProperties> <property> <name>allure.results.directory</name> <value>${project.build.directory}/allure-results</value> </property> </systemProperties> </configuration> <dependencies> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>${aspectj.version}</version> </dependency> </dependencies> </plugin>
3. 升级AspectJ版本
将AspectJ版本升级至与Spring Boot 2.6.x兼容的版本(如1.9.9.1):
<properties> <aspectj.version>1.9.9.1</aspectj.version> </properties>
4. 验证Jenkins配置
确保Jenkins的Allure报告构建步骤中,结果目录配置为${project.build.directory}/allure-results(与pom.xml中的配置一致),并且Jenkins节点有权限读取该目录下的文件。
验证方法
- 本地执行
mvn clean test allure:report,检查target/allure-results目录是否生成.json格式的测试结果文件; - 打开本地生成的Allure报告,确认测试用例是否正常显示;
- 推送修改后的代码至Jenkins,重新构建并查看报告是否恢复正常。
内容的提问来源于stack exchange,提问作者Rajkishan Swami
相关产品推荐
相关产品推荐

