什么是显示名称
- 相当于给用例起别名。
- 可以展示在 IDE、报告中。
- 可以配合其他注解使用。
为什么要使用显示名称
- IDE 执行或者报告执行的名称默认和方法名还有类名对应
- 显示名称可以起到更好辨识、更简洁的效果
如何定义一个显示名称
package com.hogwarts.JUnit5;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
public class DisplayNameTest {
// 通过DisplayName注解定义
@DisplayName(“第一条用例”)
@Test
void FirstCase(){
System.out.println(“第一条用例”);
}
@DisplayName(“第二条用例”)
@Test
void SecondCase(){
System.out.println(“第二条用例”);
}
}
DisplayName 生成器(进阶)
- 通过注解
@DisplayNameGenerator
实现生成器。 - 通过配置文件配置。
DisplayName 生成器配置
Standard-默认配置
package com.hogwarts.JUnit5;
import org.junit.jupiter.api.DisplayNameGeneration;
import org.junit.jupiter.api.DisplayNameGenerator;
import org.junit.jupiter.api.Test;
// 默认配置,不会有变化
@DisplayNameGeneration(DisplayNameGenerator.Standard.class)
public class DisplayNameTest {
@Test
void First_Case(){
System.out.println(“第一条用例”);
}
@Test
void Second_Case(){
System.out.println(“第二条用例”);
}
}
Simple-删除没有参数的方法的尾括号
package com.hogwarts.JUnit5;
import org.junit.jupiter.api.DisplayNameGeneration;
import org.junit.jupiter.api.DisplayNameGenerator;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
// 删除没有参数的方法的括号
@DisplayNameGeneration(DisplayNameGenerator.Simple.class)
public class DisplayNameTest {
@Test
void First_Case(){
System.out.println(“第一条用例”);
}
//参数化操作
@ParameterizedTest()
@ValueSource(strings = { “霍格沃兹测试开发” })
void Second_Case(String name){
System.out.println(name);
System.out.println(“第二条用例”);
}
}
ReplaceUnderscores-使用空格替换下划线
package com.hogwarts.JUnit5;
import org.junit.jupiter.api.DisplayNameGeneration;
import org.junit.jupiter.api.DisplayNameGenerator;
import org.junit.jupiter.api.Test;
// 下划线 ‘_’ 替换成空格
@DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class)
public class DisplayNameTest {
@Test
void First_Case(){
System.out.println(“第一条用例”);
}
@Test
void Second_Case(){
System.out.println(“第二条用例”);
}
}
IndicativeSentences-将类名和方法名拼接展示
package com.hogwarts.JUnit5;
import org.junit.jupiter.api.DisplayNameGeneration;
import org.junit.jupiter.api.DisplayNameGenerator;
import org.junit.jupiter.api.Test;
// 将类名和方法名拼接展示
@DisplayNameGeneration(DisplayNameGenerator.IndicativeSentences.class)
public class DisplayNameTest {
@Test
void First_Case(){
System.out.println(“第一条用例”);
}
@Test
void Second_Case(){
System.out.println(“第二条用例”);
}
}
配置参数
- 问题:每一个类都需要添加配置信息,如果所有的测试类都添加,会有很多冗余代码
- 解决方案:利用属性文件
junit-platform.properties
全局配置
如何配置
- 在路径
src/test/resources/junit-platform.properties
中添加配置文件。 - 在配置文件中添加对应的配置属性。(以displayName 为例)
# 全局配置Display name 为连接类名与方法名
junit.jupiter.displayname.generator.default = \
org.junit.jupiter.api.DisplayNameGenerator$IndicativeSentences
显示名称配置优先级
优先级 | 配置内容 |
---|---|
第一 | 注解@DisplayName
|
第二 | 注解@DisplayNameGeneration
|
第三 | 配置文件中配置DisplayNameGenerator
|
第四 | 使用默认配置org.junit.jupiter.api.DisplayNameGenerator.Standard
|