Java筆記:在IDEA平臺下使用JUnit插件進行單元測試

使用JUnit插件的場景

Java是完全面向對象語言,所有功能都在類中實現,新人測試代碼時,一般都會對每個類寫一個main函數來調用其功能,JUnit正是取代這種繁瑣操作的實用工具。它能夠不依賴main直接對代碼測試。

測試平臺:IntelliJ IDEA 2017.2

JUnit安裝與配置

下載插件:File -> Settings -> Plugins,搜索JUnit下載
在這裏插入圖片描述
實際上IDEA自帶JUnit插件,不用再下載安裝,但新建的java工程需要配置它的環境,
配置環境:File -> Project Structure,1點擊左列的Libraries,2點擊上方的加號,3在本地IDEA安裝目錄的lib下找到圖中這三個插件添加進來
在這裏插入圖片描述

新建工程,編寫測試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("測試方法二");
    }

}

在這裏插入圖片描述
可見,不需要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查詢或修改對應快捷鍵。
在這裏插入圖片描述

// 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 {
    }

}

在這裏插入圖片描述
可見,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測試類

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章