JUnit4筆記(三)---JUnit的測試套件和引數化設定
阿新 • • 發佈:2019-02-04
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));
}
}
執行結果: