@Test:
在junit3中,是經過對測試類和測試方法的命名來肯定是不是測試,且全部的測試類必須繼承junit的測試基類。在junit4中,定義一個測試方法變得簡單不少,只須要在方法前加上@Test就好了。
注意:測試方法必須是public void,即公共、無返回數據。能夠拋出異常。
html
@BeforeClass:
當咱們運行幾個有關聯的用例時,可能會在數據準備或其它前期準備中執行一些相同的命令,這個時候爲了讓代碼更清晰,更少冗餘,能夠將公用的部分提取出來,放在一個方法裏,併爲這個方法註解@BeforeClass。意思是在測試類裏全部用例運行以前,運行一次這個方法。例如建立數據庫鏈接、讀取文件等。
注意:方法名能夠任意,但必須是public static void,即公開、靜態、無返回。這個方法只會運行一次。java
@Before:
與@BeforeClass的區別在於,@Before不止運行一次,它會在每一個用例運行以前都運行一次。主要用於一些獨立於用例之間的準備工做。
好比兩個用例都須要讀取數據庫裏的用戶A信息,但第一個用例會刪除這個用戶A,而第二個用例須要修改用戶A。那麼能夠用@BeforeClass建立數據庫鏈接。用@Before來插入一條用戶A信息。
注意:必須是public void,不能爲static。不止運行一次,根據用例數而定。spring
@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的一些功能api
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() | 讓測試失敗 |