初識junit4

爲什麼要使用測試工具

        ①測試框架可以幫助我們對編寫的程序進行有目的地測試,幫助我們最大限度地避免代碼中的bug,以保證系統的正確性和穩定性。

        ②很多人對自己寫的代碼,測試時就簡單寫main,然後sysout輸出控制檯觀察結果。這樣非常枯燥繁瑣,不規範。缺點:測試方法不能一起運行,測試結果要程序猿自己觀察纔可以判斷程序邏輯是否正確。

        ③JUnit的斷言機制,可以直接將我們的預期結果和程序運行的結果進行一個比對,確保對結果的可預知性。


創建簡單業務類

        使用Eclipse創建一個項目,導入JUnit相關包,因爲eclipse集成了JUnit框架,所以可以直接右鍵項目,選擇Build Path → 點擊Add Libraries → 選擇JUnit  → 點擊Next,選擇JUnit版本,然後Finish。(其實也可以下載jar包作爲用戶庫來添加)

創建被測試類:Calculate

public class Calculate {


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

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

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

public int divide(int a,int b){
return a/b;
}
}

創建測試類:CalculateTest   (new一個junit test case然後修改類名finish)

public class CalculateTest {

@Test
public void testAdd(){
assertEquals(6, new Calculate().add(3, 3));
}


}

這樣就可以run as junit進行測試


完善測試代碼,junit4最佳實踐

測試代碼不應與項目代碼放在一起,因爲它不應出現在最後的產品中

可以放於與src平行的新建的sourceFolder test

建議在每個測試方法中加上test

 

但當需要測試的方法很多時,一個個的敲就不現實。這在創建junit時不點finish而點next可以選擇要測試的方法或要測試的所有類方法

 

注意事項:1、測試方法上必須使用@Test進行修飾(junit4

2、測試方法必須使用public void 進行修飾 且不能帶任何參數

3、新建一個源代碼目錄來存放我們的測試代碼

4、測試類的包應該和被測試類保持一致

5、測試單元中的每個方法必須可以獨立測試,測試方法間不能有任何依賴

6、測試類使用test作爲方法名前綴(不是必須)

7、測試類使用Test作爲類名的後綴(不是必須)

 

測試失敗的兩種情況      

1、Failure一般由單元測試使用的斷言方法判斷失敗所引起的,這表示測試點發現了問題,就是說程序輸出的結果和我們語氣的不一樣

2、Error是由代碼異常引起的,它可以產生於測試代碼本身的錯誤,也可以是被測試代碼中的一個隱藏的bug,如測試一個除法的方法,給除數設置爲0

3、測試用例不是用來證明你是對的,而是用來證明你沒有錯。測試用例用來達到想要的語氣結果,但對於邏輯錯誤無能爲力(例如只能判斷你計算的長方形面積是否正確,而不能判斷你使用的是長方形面積公式還是周長公式)

 

junit運行流程(在new junit test case 時會有添加方法的複選框可以添加BeforeClass、Before、After、AfterClass

1、依次爲BeforeClass、Before、測試代碼(如testAdd)、After、AfterClass

2BeforeClass是靜態的,比較適合加載配置文件,而AfterClass通常用來對資源的清理,如關閉數據庫的鏈接

3Beforeafter會在每個測試方法的前後各執行一次

 

 

Junit中常用註解

1、Test屬性Test(expected=ArithmeticException.class)expected=XX.class)捕獲可能拋出的異常    (timeout=毫秒)定義測試代碼執行的時間,避免測試時出現死循環問題;也可對性能進行測試,如判斷讀取文件的時間是否在限定範圍內。

2、@Ingore所修飾的測試方法會被測試運行器忽略

3、RunWith可以更改測試運行器org.junit.runner.Runner

可靜態導如Assert類靜態方法根據api選擇想要的斷言方法

 

 

深入使用

1、junit4測試套件

可以將所有的測試類集合在一個測試套件中,這樣每次驗證系統功能的時候,只需要執行一次測試套件即可。

如何使用:

·測試套件是一個空類(不包含其他方法),而且是public修飾的

·添加類註解:@RunWith(Suite.class)//更改測試類運行器

@Suite.SuiteClasses({TaskTest1.class,TaskTest2.class,TaskTest3.class}) 將要測試的類以數組形式傳入各測試類的class對象

 

2、junit4的參數化設置

@RunWith(Parameterized.class)

public class ParameterTest{

//1、更改默認的測試運行器爲RunWithParameterized.class

//2、聲明變量來存放預期值和結果值

//3、聲明一個返回值爲Collection的公共靜態方法,並使用@Parameters進行修飾

//4、爲測試類聲明一個帶有參數的公共構造函數,並在其中爲之前聲明的變量賦值

Int expected = 0;

Int input1 = 0;

Int input2 = 0;

 

@Parameters

Public static Collection<Object[]> t(){

Return Arrays.asList(new Object[][]{

{3,1,2},{4,2,2}

});

}

 

Public ParameterTest(int expected,int input1,int input2){

this.expected = expected;

This.input1 = input1;

This.input2 = inpu2;

}

 

@Test

Public void testAdd(){

assertEquals(expected,new Calculate().add(input1,input2));

}

}

 

Class Calculate{

Public int add(int a,int b){

Return a+b;

}

}

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