Java笔记:在IDEA平台下使用JUnit插件进行单元测试

使用JUnit插件的场景

Java是完全面向对象语言,所有功能都在类中实现,新人测试代码时,一般都会对每个类写一个main函数来调用其功能,JUnit正是取代这种繁琐操作的实用工具。它能够不依赖main直接对代码测试。

测试平台:IntelliJ IDEA 2017.2

JUnit安装与配置

下载插件:File -> Settings -> Plugins,搜索JUnit下载
Java笔记:在IDEA平台下使用JUnit插件进行单元测试_第1张图片
实际上IDEA自带JUnit插件,不用再下载安装,但新建的java工程需要配置它的环境,
配置环境:File -> Project Structure,1点击左列的Libraries,2点击上方的加号,3在本地IDEA安装目录的lib下找到图中这三个插件添加进来
Java笔记:在IDEA平台下使用JUnit插件进行单元测试_第2张图片

新建工程,编写测试demo

新建工程:File -> New -> Project,自定义项目名称(示例为JUnitTest)和项目路径
demo代码①:在src文件夹新建Java Class文件(示例为TestDemo.java),观察一个最简单的单元测试Test用法

import org.junit.Test;

public class TestDemo {

    @Test
    public void show1(){
        System.out.println("测试方法一");
    }

    @Test
    public void show2(){
        System.out.println("测试方法二");
    }

}

Java笔记:在IDEA平台下使用JUnit插件进行单元测试_第3张图片
可见,不需要main函数,TestDemo类的方法也可以Run。

demo代码②:在src文件夹新建Java Class文件(示例为Calculator.java),观察demo类中的main函数测试和JUnit测试的不同

// 类定义和main函数测试,这里main方法暂时取消注释
public class Calculator {

    public int add(int x, int y) { //加法
        return x + y;
    }
    
    public int sub(int x, int y) { //减法
        return x - y;
    }
    
    public int mul(int x, int y) { //乘法
        return x * y;
    }
    
    public int div(int x, int y) { //除法
        return x / y;
    }
    
    public int div2(int x, int y) { //除法 做了异常判断
        try {
            int z = x / y;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return x / y;
    }
    
    public void unCompleted(int x, int y) { //未完成的模块:例如平方、开方等等
        //TODO
    }

    //    public static void main(String[] args) { // 传统代码测试
    //        int a = 8;
    //        int b = 2;
    //        Calculator calculator = new Calculator();
    //        if (calculator.add(a, b) == 10) {
    //              System.out.println("Test passed!");
    //               } else {
    //              System.out.println("Test failed!");
    //        }
    //        if (calculator.sub(a, b) == 6) {
    //              System.out.println("Test passed!");
    //               } else {
    //              System.out.println("Test failed!");
    //        }
    //        if (calculator.mul(a, b) == 16) {
    //              System.out.println("Test passed!");
    //               } else {
    //              System.out.println("Test failed!");
    //        }     
    //        if (calculator.div(a, b) == 4) {
    //              System.out.println("Test passed!");
    //               } else {
    //              System.out.println("Test failed!");
    //        }
    //        System.out.println(calculator.div2(a,0));
    //    }
}

再使用JUnit测试,将main方法注释,选中类名Calculator,使用快捷键①CTRL+SHIFT+T -> Create New Test,或者②ALT+Enter -> Create Test,二者是一样的。在对话框中填入的测试类的名称勾选需要测试的方法,则会自动新建一个测试用例文件(示例为CalculatorJUnitTest.java)
注1:测试的方法必须是public,且不能有static修饰。
注2:若快捷键无效,可在 Settings -> Keymap 里搜索test查询或修改对应快捷键。
Java笔记:在IDEA平台下使用JUnit插件进行单元测试_第4张图片

// JUnit建立的测试类框架,每个方法内部自定义编写
import org.junit.Test;

import static org.junit.Assert.*;

public class CalculatorJUnitTest {

    Calculator calculator = new Calculator();

    @Test
    public void add() throws Exception {
        if (calculator.add(8, 2) == 10) {
            System.out.println("Test add passed!");
        } else {
            System.out.println("Test add failed!");
        }
    }

    @Test
    public void sub() throws Exception {
        if (calculator.sub(8, 2) == 6) {
            System.out.println("Test sub passed!");
        } else {
            System.out.println("Test sub failed!");
        }
    }

    @Test
    public void mul() throws Exception {
        if (calculator.mul(8, 2) == 16) {
            System.out.println("Test mul passed!");
        } else {
            System.out.println("Test mul failed!");
        }
    }

    @Test
    public void div() throws Exception {
    }

    @Test
    public void div2() throws Exception {
    }

}

Java笔记:在IDEA平台下使用JUnit插件进行单元测试_第5张图片
可见,JUnit可以更清晰有效地完成各个方法的测试。测试单个方法时,在该方法名上右键点Run。

待解决疑问

1)JUnit环境配置时,有同学在Settings里搜索JUnit出现了JUnit Generator,我没有搜到,不知道是不是版本问题。
2)Create Test或Create New Test时没有新建test文件夹,不知道有没有设置错误。

参考:
[1] java单元测试(@Test)
[2] IDEA中单元测试@Test使用
[3] IntelliJ IDEA快速自动生成Junit测试类

你可能感兴趣的:(Java)