junit4教程junit4.5官方下載
更新時間:2008年09月11日 21:22:34 作者:
前提:本文假設(shè)讀者已經(jīng)具有使用JUnit 4以前版本的經(jīng)驗。
官方下載地址http://sourceforge.net/project/showfiles.php?group_id=15278&package_id=12472
JUnit4是JUnit框架有史以來的最大改進,其主要目標(biāo)便是利用Java5的Annotation特性簡化測試用例的編寫。
先簡單解釋一下什么是Annotation,這個單詞一般是翻譯成元數(shù)據(jù)。元數(shù)據(jù)是什么?元數(shù)據(jù)就是描述數(shù)據(jù)的數(shù)據(jù)。也就是說,這個東西在Java里面可以用來和public、static等關(guān)鍵字一樣來修飾類名、方法名、變量名。修飾的作用描述這個數(shù)據(jù)是做什么用的,差不多和public描述這個數(shù)據(jù)是公有的一樣。想具體了解可以看Core Java2。廢話不多說了,直接進入正題。
我們先看一下在JUnit 3中我們是怎樣寫一個單元測試的。比如下面一個類:
public class AddOperation {
public int add(int x,int y){
return x+y;
}
}
我們要測試add這個方法,我們寫單元測試得這么寫:
import junit.framework.TestCase;
import static org.junit.Assert.*;
public class AddOperationTest extends TestCase{
public void setUp() throws Exception {
}
public void tearDown() throws Exception {
}
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);
}
}
可以看到上面的類使用了JDK5中的靜態(tài)導(dǎo)入,這個相對來說就很簡單,只要在import關(guān)鍵字后面加上static關(guān)鍵字,就可以把后面的類的static的變量和方法導(dǎo)入到這個類中,調(diào)用的時候和調(diào)用自己的方法沒有任何區(qū)別。
我們可以看到上面那個單元測試有一些比較霸道的地方,表現(xiàn)在:
1.單元測試類必須繼承自TestCase。
2.要測試的方法必須以test開頭。
如果上面那個單元測試在JUnit 4中寫就不會這么復(fù)雜。代碼如下:
import junit.framework.TestCase;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
/**
*
* @author bean
*/
public class AddOperationTest extends TestCase{
public AddOperationTest() {
}
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
}
@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)不會霸道的要求你必須繼承自TestCase了,而且測試方法也不必以test開頭了,只要以@Test元數(shù)據(jù)來描述即可。
從上面的例子可以看到在JUnit 4中還引入了一些其他的元數(shù)據(jù),下面一一介紹:
@Before:
使用了該元數(shù)據(jù)的方法在每個測試方法執(zhí)行之前都要執(zhí)行一次。
@After:
使用了該元數(shù)據(jù)的方法在每個測試方法執(zhí)行之后要執(zhí)行一次。
注意:@Before和@After標(biāo)示的方法只能各有一個。這個相當(dāng)于取代了JUnit以前版本中的setUp和tearDown方法,當(dāng)然你還可以繼續(xù)叫這個名字,不過JUnit不會霸道的要求你這么做了。
@Test(expected=*.class)
在JUnit4.0之前,對錯誤的測試,我們只能通過fail來產(chǎn)生一個錯誤,并在try塊里面assertTrue(true)來測試?,F(xiàn)在,通過@Test元數(shù)據(jù)中的expected屬性。expected屬性的值是一個異常的類型
@Test(timeout=xxx):
該元數(shù)據(jù)傳入了一個時間(毫秒)給測試方法,
如果測試方法在制定的時間之內(nèi)沒有運行完,則測試也失敗。
@ignore:
該元數(shù)據(jù)標(biāo)記的測試方法在測試中會被忽略。當(dāng)測試的方法還沒有實現(xiàn),或者測試的方法已經(jīng)過時,或者在某種條件下才能測試該方法(比如需要一個數(shù)據(jù)庫聯(lián)接,而在本地測試的時候,數(shù)據(jù)庫并沒有連接),那么使用該標(biāo)簽來標(biāo)示這個方法。同時,你可以為該標(biāo)簽傳遞一個String的參數(shù),來表明為什么會忽略這個測試方法。比如:@lgnore(“該方法還沒有實現(xiàn)”),在執(zhí)行的時候,僅會報告該方法沒有實現(xiàn),而不會運行測試方法。
JUnit4是JUnit框架有史以來的最大改進,其主要目標(biāo)便是利用Java5的Annotation特性簡化測試用例的編寫。
先簡單解釋一下什么是Annotation,這個單詞一般是翻譯成元數(shù)據(jù)。元數(shù)據(jù)是什么?元數(shù)據(jù)就是描述數(shù)據(jù)的數(shù)據(jù)。也就是說,這個東西在Java里面可以用來和public、static等關(guān)鍵字一樣來修飾類名、方法名、變量名。修飾的作用描述這個數(shù)據(jù)是做什么用的,差不多和public描述這個數(shù)據(jù)是公有的一樣。想具體了解可以看Core Java2。廢話不多說了,直接進入正題。
我們先看一下在JUnit 3中我們是怎樣寫一個單元測試的。比如下面一個類:
public class AddOperation {
public int add(int x,int y){
return x+y;
}
}
我們要測試add這個方法,我們寫單元測試得這么寫:
import junit.framework.TestCase;
import static org.junit.Assert.*;
public class AddOperationTest extends TestCase{
public void setUp() throws Exception {
}
public void tearDown() throws Exception {
}
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);
}
}
可以看到上面的類使用了JDK5中的靜態(tài)導(dǎo)入,這個相對來說就很簡單,只要在import關(guān)鍵字后面加上static關(guān)鍵字,就可以把后面的類的static的變量和方法導(dǎo)入到這個類中,調(diào)用的時候和調(diào)用自己的方法沒有任何區(qū)別。
我們可以看到上面那個單元測試有一些比較霸道的地方,表現(xiàn)在:
1.單元測試類必須繼承自TestCase。
2.要測試的方法必須以test開頭。
如果上面那個單元測試在JUnit 4中寫就不會這么復(fù)雜。代碼如下:
import junit.framework.TestCase;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
/**
*
* @author bean
*/
public class AddOperationTest extends TestCase{
public AddOperationTest() {
}
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
}
@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)不會霸道的要求你必須繼承自TestCase了,而且測試方法也不必以test開頭了,只要以@Test元數(shù)據(jù)來描述即可。
從上面的例子可以看到在JUnit 4中還引入了一些其他的元數(shù)據(jù),下面一一介紹:
@Before:
使用了該元數(shù)據(jù)的方法在每個測試方法執(zhí)行之前都要執(zhí)行一次。
@After:
使用了該元數(shù)據(jù)的方法在每個測試方法執(zhí)行之后要執(zhí)行一次。
注意:@Before和@After標(biāo)示的方法只能各有一個。這個相當(dāng)于取代了JUnit以前版本中的setUp和tearDown方法,當(dāng)然你還可以繼續(xù)叫這個名字,不過JUnit不會霸道的要求你這么做了。
@Test(expected=*.class)
在JUnit4.0之前,對錯誤的測試,我們只能通過fail來產(chǎn)生一個錯誤,并在try塊里面assertTrue(true)來測試?,F(xiàn)在,通過@Test元數(shù)據(jù)中的expected屬性。expected屬性的值是一個異常的類型
@Test(timeout=xxx):
該元數(shù)據(jù)傳入了一個時間(毫秒)給測試方法,
如果測試方法在制定的時間之內(nèi)沒有運行完,則測試也失敗。
@ignore:
該元數(shù)據(jù)標(biāo)記的測試方法在測試中會被忽略。當(dāng)測試的方法還沒有實現(xiàn),或者測試的方法已經(jīng)過時,或者在某種條件下才能測試該方法(比如需要一個數(shù)據(jù)庫聯(lián)接,而在本地測試的時候,數(shù)據(jù)庫并沒有連接),那么使用該標(biāo)簽來標(biāo)示這個方法。同時,你可以為該標(biāo)簽傳遞一個String的參數(shù),來表明為什么會忽略這個測試方法。比如:@lgnore(“該方法還沒有實現(xiàn)”),在執(zhí)行的時候,僅會報告該方法沒有實現(xiàn),而不會運行測試方法。
相關(guān)文章
使用jekins自動構(gòu)建部署java maven項目的方法步驟
這篇文章主要介紹了使用jekins自動構(gòu)建部署java maven項目的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01基于JAVA中Jersey處理Http協(xié)議中的Multipart的詳解
之前在基于C#開發(fā)彩信用最原始的StringBuilder拼接字符串方式處理過Multipart?,F(xiàn)在在做一個項目的時候,由于之前的技術(shù)路線都是使用Jersey處理Http這塊,為了保持技術(shù)路線一致,研究了一下如何使用Jersey處理Http協(xié)議中的Multipart2013-05-05Java中的StackOverflowError錯誤問題及解決方法
這篇文章主要介紹了Java中的StackOverflowError錯誤,在本文中,我們仔細研究了StackOverflower錯誤,包括Java代碼如何導(dǎo)致它,以及我們?nèi)绾卧\斷和修復(fù)它,需要的朋友可以參考下2022-07-07Java開發(fā)實現(xiàn)的Socket雙向通信功能示例
這篇文章主要介紹了Java開發(fā)實現(xiàn)的Socket雙向通信功能,結(jié)合實例形式分析了java基于socket實現(xiàn)的服務(wù)器端與客戶端雙向通信相關(guān)操作技巧,需要的朋友可以參考下2018-01-01