如何去除Maven Surefire Plugin XML报告中测试名的附加内容?
解决Maven Surefire报告中测试名附加多余内容的问题
一、定位附加内容的来源
- 直接查看生成的XML报告:默认路径为
target/surefire-reports,观察附加内容的格式(比如是否是测试类名、方法名、参数值等),快速判断来源。 - 检查Surefire与JUnit版本兼容性:Playwright Java通常搭配JUnit 5,若Surefire版本过低,可能不会优先读取
@DisplayName,而是默认拼接类名、方法名作为测试名。 - 排查参数化测试:如果测试用了
@ParameterizedTest,Surefire默认会把参数值追加到测试名后,这是最常见的附加内容来源。
二、消除附加内容的具体方案
1. 配置Surefire优先使用@DisplayName
在pom.xml中明确配置Surefire插件,指定JUnit 5引擎并开启@DisplayName优先级:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>3.2.5</version> <!-- 使用最新稳定版 --> <configuration> <properties> <property> <name>junit.jupiter.displayname.generator.default</name> <value>org.junit.jupiter.api.DisplayNameGenerator$Simple</value> </property> </properties> <useModulePath>true</useModulePath> </configuration> <dependencies> <dependency> <groupId>org.junit.platform</groupId> <artifactId>junit-platform-surefire-provider</artifactId> <version>1.10.0</version> </dependency> </dependencies> </plugin> </plugins> </build>
2. 处理参数化测试的附加内容
如果是参数化测试导致的后缀,可通过两种方式处理:
- 给
@ParameterizedTest设置固定显示名,不追加参数:
@ParameterizedTest @DisplayName("NameMyTest") @ValueSource(strings = {"param1", "param2"}) void myTest(String param) { // 测试逻辑 }
- 全局配置禁用参数追加:在测试类上添加注解,统一使用简单显示名生成规则:
@DisplayNameGeneration(DisplayNameGenerator.Simple.class) public class MyTestClass { // 测试方法 }
3. 排查Playwright测试包装器
部分Playwright测试脚手架可能会自动给测试名添加上下文信息(如浏览器类型、环境等),可检查测试类的继承结构或Playwright运行器配置,确认是否存在额外的命名逻辑并调整。
三、验证方案
执行mvn clean test命令重新运行测试,查看target/surefire-reports下的XML报告,确认<testcase name="NameMyTest">是否符合预期。
内容的提问来源于stack exchange,提问作者Michael S.
相关产品推荐
相关产品推荐

