【JUnit】Java單元測試


1. 測試流程

在這裏插入圖片描述
在這裏插入圖片描述

2. JUnit

相關術語:

  • TestCase:表示一個測試單元
  • TestSuite:表示一組TestCase
  • TestFixture:測試環境
  • TestResult:保存測試結果
  • TestRunner:運行測試
  • TestListener:監聽測試過程,收集測試數據
  • Assert:斷言

在這裏插入圖片描述

3. Junit生命週期

有五個常用註解

  • @Test 標註測試方法
  • @Before 測試方法運行之前運行,初始化測試對象
  • @After 測試方法運行之後運行,銷燬測試對象
  • @BeforeClass 測試類開始前執行,初始化重量級測試對象
  • @AfterClass 測試類結束後執行,銷燬收尾工作

在這裏插入圖片描述

  1. 調用@BeforeClass
  2. 對於每個測試方法,調用@Before、@Test、@After
  3. 調用@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)即可

6. springboot中的測試

參考

自動化測試

參考

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