前言

众所周知,测试对于一个工程而言是至关重要的,而现在绝大多数团队都配有专门的测试人员来使用各种工具进行专业的测试,这里介绍的Junit的更多是作为开发同学在开发过程或最后提供自测的工具,使用起来非常方便,并且可以提供出测试覆盖率,以及具体没有覆盖的代码。
下面还是使用Idea做为演示IDE,使用Eclipse或者其他IDE的同学请自行搜索搭建方式,应该都是大同小异。
这里网上有很多详细的使用方法,是作为Junit框架来讲解的,看起来是更适合于测试同学,对我来说,只希望使用Junit来做简单的关键方法的自测,所以比较随意。

环境准备

依赖:

<dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

用法

假如你想测试Account类中扣款方法pay()有没有正常执行。
Account:

public class Account {
    private int balance;
    public Boolean pay(int money){
        if(balance >= money) {
            balance -= money;
            return true;
        }else
            return  false;
    }
    public void charge(int money){
        this.balance += money;
    }

    public int getBalance() {
        return balance;
    }
}

在测试路径下(建议将测试类单独放在测试的包路径下)新建一个测试类,测试类可以这么写:

public class AccountTest {
    private Account account = new Account();
    //@Test就是Junit测试的注解
    @Test
    public void testAccount(){
        //Assert.assertEquals前面为期望值,后面为实际值,用来验证数据是否符合预期
        Assert.assertEquals(0,account.getBalance());
        account.charge(100);
        Assert.assertEquals(100,account.getBalance());
        Assert.assertEquals(true,account.pay(20));
        Assert.assertEquals(80,account.getBalance());
        Assert.assertEquals(false,account.pay(100));
    }
}

然后不需要main函数可以直接运行:

vscode执行java单元测试覆盖率 idea单元测试覆盖率_vscode执行java单元测试覆盖率


如果是绿色没有报错就代表测试通过

vscode执行java单元测试覆盖率 idea单元测试覆盖率_idea_02

批量测试以及测试覆盖率

Idea右上角的Edit Configurations

vscode执行java单元测试覆盖率 idea单元测试覆盖率_vscode执行java单元测试覆盖率_03

新建一个Junit测试,Test kind可以选择类,还是整个包路径,我这里选了整个包,然后选好工程。

vscode执行java单元测试覆盖率 idea单元测试覆盖率_idea_04


然后在Code Coverager选项卡,。Tracin模式会增加消耗,但测量会更精确。然后添加测试类想要覆盖的被测试代码路径

vscode执行java单元测试覆盖率 idea单元测试覆盖率_自动化测试工具_05


都配置好后,通过右上角的Run With Coverage来运行

vscode执行java单元测试覆盖率 idea单元测试覆盖率_idea_06


结果如下:

vscode执行java单元测试覆盖率 idea单元测试覆盖率_vscode执行java单元测试覆盖率_07


右边会出现测试覆盖率的结果,类左边的颜色代表了测试结果,没有被测试覆盖到的代码都将高亮显示为红色,覆盖的代码颜色则是绿色,如果一些代码是只覆盖部分,那没将显示为黄色。

vscode执行java单元测试覆盖率 idea单元测试覆盖率_自动化测试工具_08

总结

通过自动化Junit单元测试,可以让开发更好的完成自测,提高代码质量,也让项目流程推进更加清晰快速,希望大家都养成写单元测试的习惯。