JUnit基本用法

JUnit的一些注意事項:

  • 測試方法必須使用@Test修飾
  • 測試方法必須使用public void進行修飾,不能帶參數
  • 通常使用單元測試會新建一個test目錄存放測試代碼,在生產部署的時候只須要將test目錄下代碼刪除便可
  • 測試代碼的包應該和被測試代碼包結構保持一致
  • 測試單元中的每一個方法必須能夠獨立測試,方法間不能有任何依賴
  • 測試類通常使用Test做爲類名的後綴
  • 測試方法使通常用test做爲方法名的前綴

測試失敗說明:

  • Failure:通常是因爲測試結果和預期結果不一致引起的,表示測試的這個點發現了問題
  • error:是由代碼異常引發的,它能夠產生於測試代碼自己的錯誤,也能夠是被測試代碼中隱藏的bug

一些經常使用註解:

  • @Test:將一個普通方法修飾成一個測試方法
    • @Test(excepted=xx.class): xx.class表示異常類,表示測試的方法拋出此異常時,認爲是正常的測試經過的
    • @Test(timeout=毫秒數) :測試方法執行時間是否符合預期
  • @BeforeClass: 會在全部的方法執行前被執行,static方法 (全局只會執行一次,並且是第一個運行)
  • @AfterClass:會在全部的方法執行以後進行執行,static方法 (全局只會執行一次,並且是最後一個運行)
  • @Before:會在每個測試方法被運行前執行一次
  • @After:會在每個測試方法運行後被執行一次
  • @Ignore:所修飾的測試方法會被測試運行器忽略
  • @RunWith:能夠更改測試運行器org.junit.runner.Runner
  • Parameters:參數化註解

參數化測試:

對於一個方法須要進行多種場景進行測試時,能夠經過參數化測試減小測試的工做量。用法以下:java

複製代碼
 1 package junit.util;
 2 
 3 import static org.junit.Assert.assertEquals;
 4 
 5 import java.util.Arrays;
 6 import java.util.Collection;
 7 
 8 import org.junit.Test;
 9 import org.junit.runner.RunWith;
10 import org.junit.runners.Parameterized;
11 import org.junit.runners.Parameterized.Parameters;
12 
13 @RunWith(Parameterized.class)
14 public class ParameterTest {
15 
16     /**
17      * 一、更改測試運行器爲RunWith(Parameterized.class)
18      * 二、聲明變量用來存放預期值與結果值
19      * 三、聲明一個返回值爲Collection的公共靜態方法,並使用@Parameters進行修飾
20      * 四、位測試類聲明一個帶有參數的公共構造方法,並在其中爲聲明變量賦值
21      */
22     
23     int except;  //用來存儲預期結果
24     int input1;  //用來存儲第一個輸入參數
25     int input2;  //用來存儲第二個輸入參數
26     
27     @Parameters
28     public static Collection<Object[]> initTestData(){
29     return Arrays.asList(
30         new Object[][]{
31         {3,1,2},
32         {10,5,5},
33         {6,4,2},
34         {7,3,4}}
35         );
36     }
37     
38     public ParameterTest(int except,int input1,int input2){
39     this.except = except;
40     this.input1 = input1;
41     this.input2 = input2;
42     }
43     
44     
45     
46     
47     
48     @Test
49     public void testAdd() {
50     assertEquals(except, new Claculate().add(input1, input2));
51     }
52 
53 }
相關文章
相關標籤/搜索