JUnit 5 @RepeatedTest中{displayName}占位符无法解析的问题
JUnit 5 @RepeatedTest中{displayName}占位符无法解析的原因
核心原因
{displayName}这个占位符是JUnit 5.4版本才新增的特性,如果你当前使用的JUnit Jupiter(JUnit 5的核心模块)版本低于5.4,这个占位符不会被框架识别,会直接以原字符串形式显示,而不会替换成@DisplayName注解里的内容。
验证方式
检查项目依赖中JUnit Jupiter相关组件的版本:
- Maven项目查看
pom.xml里的junit-jupiter-api、junit-jupiter-engine版本 - Gradle项目查看
build.gradle里的testImplementation 'org.junit.jupiter:junit-jupiter-api:x.x.x'版本
如果版本号是5.3或更低,就会出现这个问题。
解决办法
升级JUnit Jupiter版本
把依赖版本升级到5.4及以上(推荐使用最新稳定版,比如5.9.2),升级后你的原有代码就能正常解析{displayName}占位符了。无法升级时的替代方案
如果因为项目限制不能升级版本,直接在@RepeatedTest的name属性里写死显示名称即可:@RepeatedTest(value=4, name= "RepeatedTest running: {currentRepetition}/{totalRepetitions}") @DisplayName("RepeatedTest") void repeatedTest() { // 测试逻辑 }
内容的提问来源于stack exchange,提问作者divad
相关产品推荐
相关产品推荐

