1. 程式人生 > >JUnit自動化單元測試(三):各常用註解和測試函式詳細講解

JUnit自動化單元測試(三):各常用註解和測試函式詳細講解

@Test:將一個方法修飾成一個可測試的方法;只有@Test修飾之後,這個方法才會被JUnit執行。

@Test(expected=XXException.class):表示這個方法一定會丟擲某個異常;如果沒有丟擲該異常則測試失敗。

    //測試程式碼
    @Test(expected = ArithmeticException.class)
    public void testDiv() {
        int result = calcuate.div(6, 0); // 除法中,除數為0,丟擲ArithmeticException
    }

@Test((timeout=XX):表示這個方法執行的超時時間,單位毫秒;

如果這個方法在規定時內還沒結果,則測試失敗。

    //測試程式碼
    @Test(timeout = 3000)
    public void testTimeout () {
        while (true) {
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

@Before:會在每一個測試方法被執行前執行一次;

一般用於初始化測試資料。注意:有多少個@Test修飾的方法就會執行多少次。

@After:會在每一個測試方法執行後被執行一次;一般用於登出測試資料。注意:有多少個@Test修飾的方法就會執行多少次。

@BeforeClass:它會在所有的方法執行前執行,static修飾;一般用於測試需要讀取檔案資料時。注意:不管有多少個@Test修飾的方法只執行一次。

@AfterClass:它會在所有的方法執行結束後執行,static修飾;一般用於斷開檔案連線。注意:不管有多少個@Test修飾的方法只執行一次。

@Ignore:所修飾的測試方法會被測試執行器忽略;當方法還沒寫完時可用,寫好之後刪掉@Ignore即可開始測試。

    //測試程式碼
    @Ignore
    @Test
    public void testIgnore () {
        System.out.println("我會被忽略,不會執行");
    }

@RunWith:可以更改測試執行器 org.junit.runner.Runner;當需要多個或自定義的執行器時用,下一篇具體講解。

註解大致是就這麼多,此外還有一些常用的斷言函式:

AssertEquals:斷言兩個結果相等;
AssertArrayEquals:斷言兩個陣列相等;
AssertNotEquals:斷言兩個結果不相等;
AssertSame:判斷兩個物件是否為同一個,不同於equals這裡是使用“==”判斷;
AssertTrue:斷言結果為真;
AssertFalse:斷言結果為假;
AssertNull:斷言結果為空;
AssertNotNull:斷言結果不為空;
AssertThat:使用Matcher做自定義的校驗;
如果想了解更多的測試函式,請自行查閱Assert API,這裡就不詳細說明了。