JUnit--注解詳解


JUnit

JUnit注解詳解

@Test

在方法前加上@Test,定義為一個測試方法

測試方法必須是 public void 即公共,無返回值的,可拋出異常

@Test
public void add() {
    example test = new example();
    assertEquals(5,test.add(1,4));
}

@Ignore

暫時不運行某些測試方法/測試類,在測試方法前加上@Ignore注解,JUnit會統計Ignore次數

@Ignore
@Test
public void add() {
    example test = new example();
    assertEquals(5,test.add(1,4));
}

@BeforeClass

在運行幾個測試方法時,可能需要在數據准備或其他准備中執行一些相同命令,此時為了代碼更加清晰,更少冗余,可以將公用部分提取出來放在一個方法中,並注解@BeforeClass,在所有測試方法運行前先運行一次這個方法,例如創建數據庫,讀取文件等,該方法必須是public static void,即公共靜態且無返回值

@BeforeClass
public static void aaa(){
    System.out.println("test begin");
}

@Before

與@BeforeClass區別,@Before會在每個用例運行之前先運行一遍,主要用於一些獨立用例之前的准備工作,比如兩個用例都需要讀取數據庫里用戶A的信息,用例1讀完后刪除A的信息,而用例2讀完后會修改A的信息,此時我們可以在@BeforeClass里建立數據庫連接,在@Before里插入一條用戶A的信息用以測試。

@Before
public void beforeTest(){
    System.out.println("test begin");
}

注:與上面的區別是此時根據用例數量輸出了多行test begin

@After

與@Before對應

@RunWith()

概念:測試方法,測試類,測試集,測試運行器

測試方法:用@Test注解的一些方法

測試類:包含一個或多個測試方法的Test.java文件

測試集,是一個suite,包含多個測試類

測試運行器:決定運行方法偏好來運行測試方法/類/集

@RunWith()放在測試類名之前運行,用以確定運行方法,若不標注則會使用默認運行器

常見運行器:

1.@RunWith(Parameterized.class)

參數化運行器,配合@Parameter使用參數化功能

2.@RunWith(Suite.class)

@SuiteClasses({ATest.class,BTest.class,CTest.class})

測試集運行器配合使用測試集功能

3.@RunWith(JUnit4.class)

使用JUnit4默認運行器

4.@RunWith(JUnit38ClassRunner.class)

用於兼容JUnit3.8運行器

5.其他運行器功能

@RunWith(SpringJUnit4ClassRunner.class)

集成了Spring的一些功能

@RunWith(JUnit4.class)

@Parameter

用於使用參數化功能

限時測試

@Test(timeout = 1000)

測試邏輯復雜,嵌套較深的程序時,易出現死循環,故需要加入一些測試限定措施,限時測試規定了一個測試執行時間,若超過了測試規定的執行時間就會被系統強行終止,並且系統會匯報結束的原因為超時。在@Test注解中加入一個參數即可(@Test(timeout=1000)),單位為毫秒

@Test(timeout = 1000)

測試異常

@Test(expected = ArithmeticException.class)

@Test標注加上此參數,當代碼無異常時也會拋出異常

@Test(expected = ArithmeticException.class)

自定義@MyTest注解並實現單元測試

目的

完成自定義注解@MyTest 並實現標有注解的方法並啟動他(模擬@Test注解做單元測試)

步驟

1.新建一個注解類cannotation 命名為MyTest

2.創建一個TestJUnit單元測試類,寫入幾個方法,例如public void test();

3.創建一個MyTestDemo測試類(主功能實現類),該類利用反射機制來實現TestJUnit單元測試類中加@MyTest注解方法的啟動

4.給予注解類生命周期與反射機制吻合,也就是定義注解可以保留到運行時,通過反射機制以獲取注解信息

5.編寫MyTestDemo測試類,利用反射機制獲取TestJUnit單元測試類的所有方法對象,並獲取單元測試類中所有方法對象,遍歷所有方法對象執行加有@MyTest注解的方法

6.啟動測試類查看結果(執行結果在最后)

注意:自定義注解類沒有編寫注解體,即無默認value值,標識需要啟動的方法。

注解類編譯后也是.class文件

通過反射機制來完成自定義注解操作,一定要給與注解和反射相同的生命周期

不會自動生成run方法啟動項


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM