您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
JUnit的使用總結(jié)
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2014/3/12 13:37:19 ] 推薦標(biāo)簽:JUnit 單元測試

  JUnit中的assert方法全部放在Assert類中,現(xiàn)在總結(jié)一下經(jīng)常用到的junit類中assert方法。

  1.assertTrue/False([String message],boolean condition) 判斷一個(gè)條件是true還是false。

  2.fail([String message,]); 失敗,可以有消息,也可以沒有消息。

  3.assertEquals([String message],Object expected,Object actual); 判斷是否相等,可以指定輸出錯(cuò)誤信息。

  4.assertNotNull/Null([String message],Object obj); 判讀一個(gè)對(duì)象是否非空(非空)。

  5.assertSame/NotSame([String message],Object expected,Object actual); 判斷兩個(gè)對(duì)象是否指向同一個(gè)對(duì)象。看內(nèi)存地址。

  JUnit4是較歷史版本有了很大的改進(jìn),我以前自己用的是JUnit3。JUnit4的主要方便是利用Java5的Annotation特性簡化測試用例的編寫。

  記得以前在JUnit 3中我是這樣寫一個(gè)單元測試的:

public class AddOperation {
public int add(int x,int y){
return x+y;
}
}

  要測試add這個(gè)方法,寫單元測試得這么寫,一定要注意的是以下兩點(diǎn)

  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);
}
}

  如果上面那個(gè)單元測試在JUnit 4中寫不會(huì)這么復(fù)雜。代碼如下:

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已經(jīng)不會(huì)要求必須繼承自TestCase了,而且測試方法也不必以test開頭了,只要以@Test元數(shù)據(jù)來描述即可。

  另外還有其他的幾個(gè)Annotation:

  @Before:

  使用了該元數(shù)據(jù)的方法在每個(gè)測試方法執(zhí)行之前都要執(zhí)行一次。

  @After:

  使用了該元數(shù)據(jù)的方法在每個(gè)測試方法執(zhí)行之后要執(zhí)行一次。

  注意:@Before和@After標(biāo)示的方法只能各有一個(gè)。這個(gè)相當(dāng)于取代了JUnit以前版本中的setUp和tearDown方法。

  @Test(expected=*.class)

  在JUnit4.0之前,對(duì)錯(cuò)誤的測試,我們只能通過fail來產(chǎn)生一個(gè)錯(cuò)誤,并在try塊里面assertTrue(true)來測試,F(xiàn)在,通過@Test元數(shù)據(jù)中的expected屬性。expected屬性的值是一個(gè)異常的類型

  @Test(timeout=xxx):

  該元數(shù)據(jù)傳入了一個(gè)時(shí)間(毫秒)給測試方法,如果測試方法在制定的時(shí)間之內(nèi)沒有運(yùn)行完,則測試也失敗。

  @ignore:

  該元數(shù)據(jù)標(biāo)記的測試方法在測試中會(huì)被忽略。當(dāng)測試的方法還沒有實(shí)現(xiàn),或者測試的方法已經(jīng)過時(shí),或者在某種條件下才能測試該方法(比如需要一個(gè)數(shù)據(jù)庫聯(lián)接,而在本地測試的時(shí)候,數(shù)據(jù)庫并沒有連接),那么使用該標(biāo)簽來標(biāo)示這個(gè)方法。同時(shí),你可以為該標(biāo)簽傳遞一個(gè)String的參數(shù),來表明為什么會(huì)忽略這個(gè)測試方法。比如:@lgnore(“該方法還沒有實(shí)現(xiàn)”),在執(zhí)行的時(shí)候,僅會(huì)報(bào)告該方法沒有實(shí)現(xiàn),而不會(huì)運(yùn)行測試方法。

軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd