系列文章目录
- 环境:IntelliJ IDEA Community Edition 2021.3.2 - 语言:Java
前言
一、创建Alphabet类
新建一个java类命名为Alphabet。
public class Alphabet {
private static boolean isVowel(int c){
return c=='a'||c=='e'||c=='i'||c=='o'||c=='u';
}
public static int countVowels(String s){
return (int)s.toLowerCase().chars().filter(Alphabet::isVowel).count();
}
}
二、引入外部依赖
去mvnrepository获得Junit Jupiter API和Junit Platform Launcher的依赖,加入pom.xml后刷新文件。
这里的Junit Platform Launcher,我用最新的1.8.2版本会报错,换了一个旧版本就好了。
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.8.2</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform-launcher-->
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-launcher</artifactId>
<version>1.1.0</version>
<scope>test</scope>
</dependency>
三、新建测试
单击选中Alphabet的类名,右键选择Go To->Test,进行测试类的自动创建。
新建测试类时发现没有JUnit5,点击Fix进行外部依赖引入。(这里用其他版本也行,但是不同版本的依赖可能会不一样。)
依赖引入成功后,该新建测试类的窗口如下,勾选要进行测试的方法。
四、编写测试代码
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
class AlphabetTest {
@BeforeEach
void setUp() {
System.out.println("即将进行单元测试...");
}
@AfterEach
void tearDown() {
System.out.println("单元测试已经结束...");
}
@Test
void countVowels() {
assertEquals(2, Alphabet.countVowels("apple"));
}
}
这里使用的assertEquals是一个断言方法,其中第一个参数expected表示预期结果,第二个参数actual表示程序执行的实际结果。
当预期结果与实际结果一致时,则表示单元测试通过:
当预期结果与实际结果不一致时,单元测试失败:
@Test
void countVowels() {
assertEquals(5, Alphabet.countVowels("China"));
}
五、代码覆盖率
在做单元测试时,代码覆盖率常常被拿来作为衡量测试好坏的指标,甚至,用代码覆盖率来考核测试任务完成情况,比如,代码覆盖率必须达到80%或 90%。
先在Alphabet.java中再添加一个方法,用于代码覆盖率测试:
public void uncovered(){
System.out.println("this is an uncovered function...");
}
选择Run ‘AlphabetTest’ with Coverage:
在java目录中可以查看类的覆盖率:
在Alphabet.java中可以通过颜色判断代码是否被覆盖。
六、问题及解决
- 参考资料:
IDEA Maven项目利用Junit4进行单元测试 - 问题:对Junit Platform Launcher使用最新版本的依赖,报错:java: 读取…m2\repository\org\junit\platform\junit-platform-launcher\1.8.2\junit-platform-launcher-1.8.2.jar时出错; error in opening zip file。
解决:更换依赖中的jar包版本即可。