Junit 單體測試

代碼測試:
白盒測試:測試代碼結構和邏輯(可見代碼測試):黑盒測試:測試代碼功能和性能(不可見代碼測試)
白盒測試侷限性:1、不可能測試所有代碼。2 白盒測試難度比極高。
單體測試是一種白盒測試,測試代碼功能模塊 – 測試代碼單個功能

junit 是java 的單體測試技術
1、編寫junit 在工程引用junit 類庫
2、編寫單體測試用例
* 創建public void 無參數的方法 、在方法前添加@Test 註解
3、每個測試方法 相當於以前編寫main 函數,每個測試方法可以單獨執行

在使用junit進行測試當方法非常多,每個方法輸出內容到控制檯,人們無法通過人工進行檢查
* 自動化結果檢查 — 斷言 Assert
斷言原理:調用方法,調用方法前,準備測試數據、測試數據運行結果 —— 比較實際結果與預期結果是否相同

  • 編寫單體測試時,不要僅測試正確的數據和結果,測試不正確數據(非法數據)

代碼:

package com.qddx;

/*
 * 編寫加減乘數方法

 * */
public class Calcultor {

    public int add(int a, int b) {
        return a + b;
    }

    public int sub(int a, int b) {
        return a - b;
    }

    public int mul(int a, int b) {
        return a * b;
    }

    public int div(int a, int b) {
        if (b == 0) {
            throw new RuntimeException("除數爲零");
        }
        return a / b;
    }
}

測試代碼:

package com.qddx;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

//@ignore 可以忽略不想執行的方法。
public class CalcultorTest {
    // 在每個測試方法前執行的代碼
    @Before
    public void before() {
        System.out.println("before...");
    }

    // 在每個測試代碼後執行的代碼
    @After
    public void after() {
        System.out.println("after");
    }

    // 在整個測試類實例化之前只想一段代碼
    @BeforeClass
    public static void befrClass() {
        System.out.println("before....");
    }

    // 在整個類對象使用之後
    @AfterClass
    public static void afterClass() {
        System.out.println("afterclass");
    }

    @Test
    public void testAdd() {
        // 方法進行測試
        int a = 6;
        int b = 9;
        Calcultor c = new Calcultor();
        int result = c.add(a, b);
        System.out.println(result);
        // 比較實際結果和語氣結果的值
        Assert.assertEquals(15, result);
    }

    @Test
    public void testSub() {
        int a = 6;
        int b = 9;
        Calcultor c = new Calcultor();
        int result = c.sub(a, b);
        System.out.println(result);
        // 比較實際結果和預期結果的值 使用斷言
        Assert.assertEquals(-3, result);
    }

    @Test
    public void testMul() {
        int a = 6;
        int b = 9;
        Calcultor c = new Calcultor();
        int result = c.mul(a, b);
        System.out.println(result);
        // 比較實際結果和語氣結果的值
        Assert.assertEquals(54, result);
    }

    @Test
    public void testDiv() {
        int a = 6;
        int b = 2;
        Calcultor c = new Calcultor();
        int result = c.div(a, b);
        System.out.println(result);
        // 比較實際結果和語氣結果的值
        Assert.assertEquals(3, result);
    }

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