1. 程式人生 > 實用技巧 >java中的Junit單元測試

java中的Junit單元測試

什麼是測試??

測試的分類??

黑盒測試:不需要些程式碼,給輸入值,看程式是否能夠輸出期望的值
白盒測試:需要寫程式碼,關注程式的具體的執行流程

Junit單元測試-百合測試

我們以前的測試:

要測試這個類的方法ok不

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

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

/**
 * 以前的測試:
 *      建立物件去一個個呼叫方法。
 *  缺點:
 *      一個main方法只能測試一個功能,要註釋掉之前的程式碼
 
*/ public class CalculatorTest { public static void main(String[] args) { Calculator calculator = new Calculator(); int re = calculator.add(1, 23); System.out.println(re); int sub = calculator.sub(23, 1); System.out.println(sub); } }

使用junit測試方法框架後

/**
* 步驟: * 1定義一個測試類(測試用例), * 測試類名=被測試的類名Test CalculateorTest * 測試類所在的包名:xxx.xx.xx.test cn.quan.test * 2定義測試方方法: * 方法名:test測試的方法名 testAdd() * 返回值:void * 引數列表:空參 * 3給方法加註解@Test---使方法獨立執行 * 4判定結果: * 一般我們會使用斷言操作來處理結果: * Assert.assertEquals(期望的結果,運算的結果)
*/

public class CalculatorTest {
    
    @Test
    public void testAdd(){
        System.out.println("done");
        Calculator calculator = new Calculator();
        int add = calculator.add(1, 34);
        System.out.println(add);

        //斷言  斷言結果為 35
        Assert.assertEquals(34,add);
    }

    @Test
    public void testSub(){
        Calculator calculator = new Calculator();
        int sub = calculator.sub(1, 4);
        System.out.println(sub);
        Assert.assertEquals(-3,sub);
    }
}

執行第一個測試結果:---斷言不成功

執行第二個測試結果:---斷言成功

@Before

修飾的方法會在測試方法之前被自動執行

@After

修飾的方法會在測試方法執行之後自動被執行

例子:

public class CalculatorTest {

    /**
     * 初始化方法:
     * 用於資源申請,所有測試方法在執行之前都會先執行方法
     */
    @Before
    public void init(){
        System.out.println("統一開始");
    }

    /**
     * 釋放資源:
     * 在所有測試方法執行完後,都會自動執行改方法
     */
    @After
    public void close(){
        System.out.println("統一結束了");
    }

    @Test
    public void testSub(){
        Calculator calculator = new Calculator();
        int sub = calculator.sub(1, 4);
        System.out.println(sub);
        System.out.println("Test指定之中");
        Assert.assertEquals(-3,sub);
    }
}

輸出結果:

統一開始
-3
統一結束了