JUnit中的assert方法全部放在Assert類中,現在總結一下經常用到的junit類中assert方法。
1.assertTrue/False([String message],boolean condition) 判斷一個條件是true還是false。
2.fail([String message,]); 失敗,可以有消息,也可以沒有消息。
3.assertEquals([String message],Object expected,Object actual); 判斷是否相等,可以指定輸出錯誤信息。
4.assertNotNull/Null([String message],Object obj); 判讀一個對象是否非空(非空)。
5.assertSame/NotSame([String message],Object expected,Object actual); 判斷兩個對象是否指向同一個對象。看內存地址。
JUnit4是較歷史版本有了很大的改進,我以前自己用的是JUnit3。JUnit4的主要方便是利用Java5的Annotation特性簡化測試用例的編寫。
記得以前在JUnit 3中我是這樣寫一個單元測試的:
public class AddOperation {
public int add(int x,int y){
return x+y;
}
}
要測試add這個方法,寫單元測試得這么寫,一定要注意的是以下兩點
1.單元測試類必須繼承自TestCase。
2.要測試的方法必須以test開頭。
public class AddOperationTest extends TestCase{
public void testAdd() {
System.out.println(”add”);
int x = 0;
int y = 0;
AddOperation instance = new AddOperation();
int expResult = 0;
int result = instance.add(x, y);
assertEquals(expResult, result);
}
}
如果上面那個單元測試在JUnit 4中寫不會這么復雜。代碼如下:
public class AddOperationTest extends TestCase{
@Test
public void add() {
System.out.println(”add”);
int x = 0;
int y = 0;
AddOperation instance = new AddOperation();
int expResult = 0;
int result = instance.add(x, y);
assertEquals(expResult, result);
}
}
采用Annotation的JUnit已經不會要求必須繼承自TestCase了,而且測試方法也不必以test開頭了,只要以@Test元數據來描述即可。
另外還有其他的幾個Annotation:
@Before:
使用了該元數據的方法在每個測試方法執行之前都要執行一次。
@After:
使用了該元數據的方法在每個測試方法執行之后要執行一次。
注意:@Before和@After標示的方法只能各有一個。這個相當于取代了JUnit以前版本中的setUp和tearDown方法。
@Test(expected=*.class)
在JUnit4.0之前,對錯誤的測試,我們只能通過fail來產生一個錯誤,并在try塊里面assertTrue(true)來測試。現在,通過@Test元數據中的expected屬性。expected屬性的值是一個異常的類型
@Test(timeout=xxx):
該元數據傳入了一個時間(毫秒)給測試方法,如果測試方法在制定的時間之內沒有運行完,則測試也失敗。
@ignore:
該元數據標記的測試方法在測試中會被忽略。當測試的方法還沒有實現,或者測試的方法已經過時,或者在某種條件下才能測試該方法(比如需要一個數據庫聯接,而在本地測試的時候,數據庫并沒有連接),那么使用該標簽來標示這個方法。同時,你可以為該標簽傳遞一個String的參數,來表明為什么會忽略這個測試方法。比如:@lgnore(“該方法還沒有實現”),在執行的時候,僅會報告該方法沒有實現,而不會運行測試方法。