1.13-java單元測試junit

如沐春風細雨中發表於2021-01-01

單元測試junit4.12基本使用方法

回到第一章:目錄



前言

junit是java語言開源單元測試框架,由Kent Beck和Erich Gamma建立的,在專案中使用junit單元測試,需要引入2個包:
junit-4.12.jar
hamcrest-core-1.3.jar
若不知道如何獲取這2個包,可通過百度網盤下載:
連結:https://pan.baidu.com/s/1TfD8dDoF9OZB3Ay1m9iPlw
提取碼:i7tr


步驟

一、編寫一個工具類

1、開啟idea,新建工程:junit-test

在這裡插入圖片描述

2、新建包:com.my.tools
在這裡插入圖片描述
3、新建類:Computer,代表一個具備基本資料運算的計算器,這個類可作為工具供其他程式碼使用。程式碼如下:

package com.my.tools;

public class Computer {

    /**加法運算*/
    public static double add(double a,double b){
        return a+b;
    }
    /**減法運算*/
    public static double minus(double a,double b){
        return a-b;
    }
    /**乘法運算*/
    public static double multi(double a,double b){
        return a*b;
    }
    /**除法運算*/
    public static double div(double a,double b){
        return a/b;
    }
    /**求冪運算:求a的b次方*/
    public static double power(double a,double b){
        return Math.pow(a,b);
    }
    /**開方運算:求a的b次方*/
    public static double sqrtX(double a,double b){
        return Math.pow(a,1.0/b);
    }
    /**對數運算:求base為底,value的log*/
    public static double log(double value,double base){
        return Math.log(value)/Math.log(base);
    }
}

在這裡插入圖片描述

二、為工具類編寫單測程式碼

1、一般情況下,為測試這個Computer 工具類各個方法的正確性,可以建立一個main函式,然後編寫測試程式碼,通過執行main函式檢驗結果,比如:
在這裡插入圖片描述
2、當工程比較複雜,通過main函式進行除錯的成本就比較高,且一個工程中程式碼中存在大量的main函式是不可取的。因此需要單元測試框架,來快速、高效的測試某個方法的正確性,且編寫完善的單測程式碼是保證軟體質量的必要手段。

3、準備好2個junit單元測試所依賴的jar包:
junit-4.12.jar
hamcrest-core-1.3.jar

4、在工程跟目錄,新建一個目錄lib,將以上2個jar包複製到lib目錄下。
在這裡插入圖片描述
5、在com.my.tools包下面,新建Computer物件的測試類:ComputerTest,程式碼如下:

package com.my.tools;

import junit.framework.TestCase;
import org.junit.Test;

/**ComputerTest 的測試類,繼承至TestCase*/
public class ComputerTest extends TestCase {

    /**方法上加 @Test,且方法名以 test開頭*/
    @Test
    public void testAdd(){
        //1、正案例
        assertEquals(5.0,Computer.add(2,3));
        assertEquals(5.0,Computer.add(5,0));
        assertEquals(5.0,Computer.add(-1,6));
        //2、反案例
        assertNotSame(4.0,Computer.add(2,3));
    }

    @Test
    public void testMinus(){
        //1、正案例
        assertEquals(5.0,Computer.minus(10,5));
        assertEquals(5.0,Computer.minus(5,0));
        assertEquals(5.0,Computer.minus(-10,-15));
        //2、反案例
        assertNotSame(4.0,Computer.minus(2,3));
    }

    @Test
    public void testMulti(){
        //1、正案例
        assertEquals(5.0,Computer.multi(1,5));
        assertEquals(0.0,Computer.multi(5,0));
        assertEquals(5.0,Computer.multi(-5,-1));
        //2、反案例
        assertNotSame(4.0,Computer.multi(2,3));
    }

    @Test
    public void testDiv(){
        //1、正案例
        assertEquals(0.2,Computer.div(1,5));
        assertEquals(5.0,Computer.div(10,2));
        assertEquals(5.0,Computer.div(-5,-1));
        //2、反案例
        assertNotSame(4.0,Computer.div(2,3));
        assertNotSame(4.0,Computer.div(2,0));
    }

    @Test
    public void testPower(){
        //1、正案例
        assertEquals(1.0,Computer.power(1,5));
        assertEquals(100.0,Computer.power(10,2));
        assertEquals(-0.2,Computer.power(-5,-1));
        assertEquals(1.0,Computer.power(-5,0));
        //2、反案例
        assertNotSame(4.0,Computer.power(2,3));
    }
    @Test
    public void testSqrtX(){
        //1、正案例
        assertEquals(1.0,Computer.sqrtX(1,5));
        assertEquals(3.1622776601683795,Computer.sqrtX(10,2));
        assertEquals(0.2,Computer.sqrtX(5,-1));
        //2、反案例
        assertNotSame(4.0,Computer.sqrtX(2,3));
    }
    @Test
    public void testLog(){
        //1、正案例
        assertEquals(1.0,Computer.log(10,10));
        assertEquals(3.3219280948873626,Computer.log(10,2));
        //2、反案例
        assertNotSame(4.0,Computer.log(2,0));
    }
}

6、程式碼存在報錯,引入包的語句無效。這是因為以上2個jar包還沒新增到工作路徑。
在這裡插入圖片描述
7、點 file - Project Structure , 選 Libraries, 點 + 號,選到 lib目錄下的兩個jar包,點確定,ComputerTest中的程式碼就正常無報錯了。
在這裡插入圖片描述

三、執行

1、執行單個方法的測試程式碼。滑鼠點選到 要測試的方法區域,如 testAdd方法,點滑鼠右鍵,Run testAdd(),可以看到左下方 testAdd 打勾,說明testAdd程式碼裡的全部案例都通過了。

在這裡插入圖片描述
在這裡插入圖片描述

2、執行全部單元測試。滑鼠點選 ComputerTest ,右鍵 Run ‘ComputerTest’。可見左下角每個測試方法的執行情況。
在這裡插入圖片描述
在這裡插入圖片描述

相關文章