1. 測試流程
2. JUnit
相關術語:
- TestCase:表示一個測試單元
- TestSuite:表示一組TestCase
- TestFixture:測試環境
- TestResult:保存測試結果
- TestRunner:運行測試
- TestListener:監聽測試過程,收集測試數據
- Assert:斷言
3. Junit生命週期
有五個常用註解
- @Test 標註測試方法
- @Before 測試方法運行之前運行,初始化測試對象
- @After 測試方法運行之後運行,銷燬測試對象
- @BeforeClass 測試類開始前執行,初始化重量級測試對象
- @AfterClass 測試類結束後執行,銷燬收尾工作
- 調用@BeforeClass
- 對於每個測試方法,調用@Before、@Test、@After
- 調用@AfterClass
例子:
@Test
public void test1(){
Test t = new Test();
// 開始測試
}
@Test
public void test2(){
Test t = new Test();
// 開始測試
}
@Test
public void test3(){
Test t = new Test();
// 開始測試
}
上述的三個測試都需要初始化一個Test對象,因此可以將該對象放到@Before中
@Before
public void setUp(){
Test t = new Test();
}
@Test
public void test1(){
// 開始測試
}
@Test
public void test2(){
// 開始測試
}
@Test
public void test3(){
// 開始測試
}
這樣在每個測試開始時,都會自動調用@Before中的方法
4. 異常測試
異常測試,指的是:該方法必須拋出這個異常,才能通過測試
使用
@Test(expected = NumberFormatExcpetion.class)
標註該測試必須拋出數字格式化異常
5. 參數化測試
參數化測試,指的是:給定測試集{輸入,預期輸出},然後統一進行測試。
使用下面的代碼模板即可(測試絕對值函數爲例)
@RunWith(Parameterized.class)
public class MyTest {
@Parameterized.Parameters
public static Collection<?> data(){
// 構造測試數據,二維數組第一個是輸入,第二個是預計輸出
return Arrays.asList(new Object[][]{
{0,0},
{1,1},
{3,"3"}}
);
}
private int input;
private int expected;
public MyTest(int input,int expected){
this.input = input;
this.expected=expected;
}
@Test
public void test(){
// 調用測試方法
int r = Math.abs(this.input);
// 進行測試比對
Assert.assertEquals(this.expected,r);
}
}
寫法固定,只需要更改測試集即可。
5. 超時測試
@Test(timeout=1000)即可