junit 常用注解 + junit 斷言詳解


@Test:
    在junit3中,是通過對測試類和測試方法的命名來確定是否是測試,且所有的測試類必須繼承junit的測試基類。在junit4中,定義一個測試方法變得簡單很多,只需要在方法前加上@Test就行了。
    注意:測試方法必須是public  void,即公共、無返回數據。可以拋出異常。

@Ignore:
     有時候我們想暫時不運行某些測試方法\測試類,可以在方法前加上這個注解。在運行結果中,junit會統計忽略的用例數,來提醒你。但是不建議經常這么做,因為這樣的壞處時,容易忘記去更新這些測試方法,導致代碼不夠干凈,用例遺漏。使用此標注的時候不能與其它標注一起使用,如:和@Test 標注一起使用,那就沒用了

@BeforeClass:
    當我們運行幾個有關聯的用例時,可能會在數據准備或其它前期准備中執行一些相同的命令,這個時候為了讓代碼更清晰,更少冗余,可以將公用的部分提取出來,放在一個方法里,並為這個方法注解@BeforeClass。意思是在測試類里所有用例運行之前,運行一次這個方法。例如創建數據庫連接、讀取文件等。
    注意:方法名可以任意,但必須是public static void,即公開、靜態、無返回。這個方法只會運行一次。

@AfterClass:
    跟@BeforeClass對應,在測試類里所有用例運行之后, 運行一次。用於處理一些測試后續工作,例如清理數據,恢復現場。
    注意:同樣必須是public static void,即公開、靜態、無返回。這個方法只會運行一次。

@Before:
    與@BeforeClass的區別在於,@Before不止運行一次,它會在每個用例運行之前都運行一次。主要用於一些獨立於用例之間的准備工作。
    比如兩個用例都需要讀取數據庫里的用戶A信息,但第一個用例會刪除這個用戶A,而第二個用例需要修改用戶A。那么可以用@BeforeClass創建數據庫連接。用@Before來插入一條用戶A信息。
    注意:必須是public void,不能為static。不止運行一次,根據用例數而定。

@After:與@Before對應。

@Runwith:
    首先要分清幾個概念:測試方法、測試類、測試集、測試運行器。
    其中測試方法就是用@Test注解的一些函數。
    測試類是包含一個或多個測試方法的一個Test.java文件。
    測試集是一個suite,可能包含多個測試類。
    測試運行器則決定了用什么方式偏好去運行這些測試集/類/方法。
    而@Runwith就是放在測試類名之前,用來確定這個類怎么運行的。也可以不標注,會使用默認運行器。

常見的運行器有:
    1. @RunWith(Parameterized.class) 參數化運行器,配合@Parameters使用junit的參數化功能
    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的一些功能

@Parameters: 用於使用參數化功能。
限時測試:
    對於那些邏輯很復雜,循環嵌套比較深的程序,很有可能出現死循環,因此一定要采取一些預防措施。限時測試是一個很好的解決方案。我們給這些測試函數設定一個執行時間,超過了這個時間,他們就會被系統強行終止,並且系統還會向你匯報該函數結束的原因是因為超時,這樣你就可以發現這些Bug了。要實現這一功能,只需要給@Test標注加一個參數即可 ( @Test(timeout = 1000)) 以毫秒為單位
測試異常: 
     @Test(expected = ArithmeticException.class),@Test 標注加上此參數, 當你代碼中沒有異常,也會拋出異常
 
Junit 斷言詳解: 其中方法應用的時候由於其都是static 方法,所以直接調用即可(如: Assert.assertEquals(1,1) )
    斷言是編寫測試用例的核心實現方式,即期望值是多少,測試的結果是多少,以此來判斷測試是否通過。
assertArrayEquals(expecteds, actuals) 查看兩個數組是否相等。
assertEquals(expected, actual) 查看兩個對象是否相等。類似於字符串比較使用的equals()方法
assertNotEquals(first, second) 查看兩個對象是否不相等。
assertNull(object) 查看對象是否為空。
assertNotNull(object) 查看對象是否不為空。
assertSame(expected, actual) 查看兩個對象的引用是否相等。類似於使用“==”比較兩個對象
assertNotSame(unexpected, actual) 查看兩個對象的引用是否不相等。類似於使用“!=”比較兩個對象
assertTrue(condition) 查看運行結果是否為true。
assertFalse(condition) 查看運行結果是否為false。
assertThat(actual, matcher) 查看實際值是否滿足指定的條件
fail() 讓測試失敗
 
    Junit 5 斷言官網: https://junit.org/junit5/ 


免責聲明!

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



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