W2-2:在Maven项目中进行Junit5单元测试

系列文章目录

W2-1:Maven引入外部依赖——以GSON的使用为例

W2-2:在Maven项目中进行Junit5单元测试


- 环境: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 APIJunit 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中可以通过颜色判断代码是否被覆盖。
代码覆盖

六、问题及解决

  1. 参考资料:
    IDEA Maven项目利用Junit4进行单元测试
  2. 问题:对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包版本即可。

总结

本文简单记录了在Maven中进行一次Junit5单元测试的操作过程,内容包含创建Java类、引入外部依赖、新建测试类、编写测试代码、代码覆盖率的步骤,以及操作过程中遇到的问题与其解决方法。
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值