JUnit4的基礎知識介紹

JUnit4的常用註解:

@Test:測試方法,測試程序會運行的方法,後邊可以跟參數代表不同的測試,如(expected=XXException.class)異常測試,(timeout=xxx(毫秒))超時測試

@BeforeClass:它會在所有的方法運行前被執行,static修飾

@AfterClass:它會在所有的方法運行結束後被執行,static修飾@Before:會在每一個測試方法被運行前執行一次,初始化方法

@After:會在每一個測試方法運行後被執行一次,釋放資源

@Ignore:所修飾的測試方法會被測試運行器忽略

@RunWith:可以更改測試運行器,可以自己設置運行器,只需要繼承org.junit.runner.Runner這個類就行

JUnit4的常用方法:

fail()方法:是指測試失敗

assertEquals()方法:測試2個參數(一個是預期值,一個是實際值)是否相等

JUnit4的運行流程介紹:

1.@BeforeClass修飾的方法會在所有方法被調用前被執行,而且該方法是靜態的,所以當測試類被加載後接着就會運行它,而且在內存中它只會存在一份實例,它比較適合加載配置文件,進行初始化等等

2.@Before和@After會在每個測試方法的前後各執行一次

3.@AfterClass所修飾的方法會在所有方法被調用後被執行,通常用來對資源的清理,如關閉數據庫的連接

JUnit4的基本使用介紹

ps:

1.測試方法上必須使用@Test進行修飾2.測試方法必須使用public void修飾,不帶任何參數

3.新建一個源碼目錄(如test)來存放我們的測試代碼

4.測試類的包應該和被測試類保持一致

5.建議測試類使用Test作爲類名的後綴,測試方法使用test作爲方法名的前綴

JUnit4之超時測試的使用:

通過@Test 註解中,爲timeout參數指定時間值,即可進行超時測試,如果測試運行時間超過指定的毫秒數,測試失敗,超時測試對網絡鏈接類非常重要,通過timeout 進行超時測試非常簡單

@Test(timeout=2000)//2000mspublicvoidtestWhile(){while(true)

{        System.out.println("run....");    }}

JUnit4之異常測試的使用:

在進行單元測試的時候有的時候需要測試某一方法是否拋出了正確的異常,我們希望在單元測試中通過測試保證該方法會正確的拋出正確類型的異常

@Test(excepted=ArithmeticException.class)publicvoidtestDivide(){    c.divide(2/0);}

JUnit4測試套件的介紹和使用:

在介紹之前首先我們來看看@RunWith:

當類被@RunWith註解修飾,或者類繼承了一個被該註解修飾的類.JUnit將會使用這個註解所指明的運行器(runner)來運行測試,而不是JUnit默認的運行器

JUnit測試套件的使用,即批量運行測試類,以及JUnit中的參數化設置,接下來舉例使用:

1.首先是新建兩個測試任務類:

publicclassTaskTest1{      @Testpublicvoidtest(){          System.out.println("this is TaskTest1...");      }  }

publicclassTaskTest2{      @Testpublicvoidtest() {          System.out.println("this is TaskTest2...");      }  }

2.最後是新建一個套件類,包含以上兩個任務類:

@RunWith(Suite.class)@Suite.SuiteClasses({TaskTest1.class,TaskTest2.class,TaskTest3.class})publicclassSuiteTest {/*

* 1.測試套件就是組織測試類一起運行的

* 2.寫一個作爲測試套件的入口類,這個類裏不包含其他的方法

* 3.更改測試運行器Suite.class

* 4.將要測試的類作爲數組傳入到Suite.SuiteClasses({})

*/}

JUnit4參數化設置的介紹和使用:

如果測試代碼大同小異,代碼結構都是相同的,不同的只是測試的數據和預期值,那麼有沒有更好的辦法將相同的代碼結構提取出來,提高代碼的重用度呢?,那就要使用參數化測試了,以下是基本步驟:

1.要進行參數化測試,需要在類上面指定如下的運行器:@RunWith(Parameterized.class)2.然後,在提供數據的方法上加上一個@Parameters註解,這個方法必須是靜態static的,並且返回一個集合Collection3.在測試類的構造方法中爲各個參數賦值,(構造方法是由JUnit調用的),最後編寫測試類,它會根據參數的組數來運行測試多次

@RunWith(Parameterized.class)//1.更改默認的測試運行器爲RunWith(Parameterized.class)publicclassParameterTest{//2.聲明變量存放預期值和測試數據:intexpected =0;intinput1 =0;intinput2 =0;//3.聲明一個返回值爲Collection的公共靜態方法,並使用@Parameters進行修飾:@ParameterspublicstaticCollectiondata() {returnArrays.asList(newObject[][]{                  {3,1,2},                  {4,2,2}          }) ;      }//4.爲測試類聲明一個帶有參數的公共構造函數,並在其中爲之聲明變量賦值:publicParameterTest(intexpected,intinput1,intinput2){this.expected = expected;this.input1 = input1;this.input2 = input2;      }//5.運行測試方法,即可完成對多組數據的測試:@TestpublicvoidtestAdd(){          assertEquals(expected,newCalculate().add(input1, input2));      }    }

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