1. 程式人生 > >JUnit4筆記(三)---JUnit的測試套件和引數化設定

JUnit4筆記(三)---JUnit的測試套件和引數化設定

1、JUnit測試套件

     講這個之前先要說一下@RunWith。如果一個類被@RunWith註釋修飾,或者類繼承了一個被該註釋修飾的類,JUnit將會使用這個註釋所指明的執行期來執行測試,而不是JUnit預設的執行期。
     測試套件是為了便於同時測試多個類而產生的。如果我們的測試類不斷增加,我們一個個依次執行這些測試類顯得繁瑣且費勁。如果我們將我們要執行的測試類整合到我們的測試套件中,比如一個系統功能對應一個測試事件,一個測試套件中包含多個測試類,每次測試系統功能時,只要執行一次測試套件就可以了。

測試程式碼,首先建立3個測試任務類:

public class TaskTest1 {

    @Test
    public
void test() { System.out.println("this is TaskTest1"); } } public class TaskTest2 { @Test public void test() { System.out.println("this is TaskTest2"); } } public class TaskTest3 { @Test public void test() { System.out.println("this is TaskTest3"
); } }

新建一個套件類,包含上面三個測試類:

@RunWith(Suite.class)
@Suite.SuiteClasses({TaskTest1.class,TaskTest2.class,TaskTest3.class})
public class SuitTest {

     /* 
     * 1.測試套件就是組織測試類一起執行的 
     *  
     * (1)寫一個作為測試套件的入口類,這個類裡不包含其他的方法 
     * (2)更改測試執行器Suite.class 
     * (3)將要測試的類作為陣列傳入到Suite.SuiteClasses({}) 
     */
}

執行SuitTest,結果顯示:


這裡寫圖片描述

2、引數化設定

     引數化設定允許開發人員使用不同的值反覆運行同一個測試

     步驟:
  ①要進行引數化測試,需要在類上面指定如下的執行器:@RunWith (Parameterized.class)
  ②然後,在提供資料的方法上加上一個@Parameters註解,這個方法必須是靜態static的,並且返回一個集合Collection。
  ③在測試類的構造方法中為各個引數賦值,(構造方法是由JUnit呼叫的),最後編寫測試類,它會根據引數的組數來執行測試多次。

@RunWith(Parameterized.class)   //1.更改預設的測試執行器為RunWith(Parameterized.class)  
public class ParamterTest {  

    //2.宣告變數存放預期值和測試資料  
    int expected =0;  
    int input1 = 0;  
    int input2 = 0;  

    //3.宣告一個返回值 為Collection的公共靜態方法,並使用@Parameters進行修飾  
    @Parameters  
    public static Collection<Object[]> data() {  
        return Arrays.asList(new Object[][]{  
                {3,1,2},  
                {4,2,2}  
        }) ;  
    }  

    //4.為測試類宣告一個帶有引數的公共建構函式,並在其中為之宣告變數賦值  
    public ParamterTest(int expected,int input1,int input2) {  
        this.expected = expected;  
        this.input1 = input1;  
        this.input2 = input2;  
    }  

    //5.執行測試方法,即可完成對多組資料的測試  
    @Test  
    public void testAdd() {  
        assertEquals(expected, new Calculator().add(input1, input2));  
    }  
}

執行結果:


這裡寫圖片描述