在eclipse中使用JUnit進(jìn)行單元測(cè)試_第1頁
在eclipse中使用JUnit進(jìn)行單元測(cè)試_第2頁
在eclipse中使用JUnit進(jìn)行單元測(cè)試_第3頁
在eclipse中使用JUnit進(jìn)行單元測(cè)試_第4頁
在eclipse中使用JUnit進(jìn)行單元測(cè)試_第5頁
已閱讀5頁,還剩2頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、在Eclipse中使用JUnit進(jìn)行單元測(cè)試目錄1.JUnit簡(jiǎn)介22.JUnit優(yōu)點(diǎn)23.JUnit特性34.JUnit運(yùn)用35.JUnit重要元素171.JUnit簡(jiǎn)介JUnit是一個(gè)Java語言的單元測(cè)試框架。它由Kent Beck和Erich Gamma建立,逐漸成為源于Kent Beck的sUnit的xUnit家族中最為成功的一個(gè)。 JUnit有它自己的JUnit擴(kuò)展生態(tài)圈。多數(shù)Java的開發(fā)環(huán)境都已經(jīng)集成了JUnit作為單元測(cè)試的工具。JUnit是由 Erich Gamma 和 Kent Beck 編寫的一個(gè)回歸測(cè)試框架(regression testing framework)。

2、Junit測(cè)試是程序員測(cè)試,即所謂白盒測(cè)試,因?yàn)槌绦騿T知道被測(cè)試的軟件如何(How)完成功能和完成什么樣(What)的功能。Junit是一套框架,繼承TestCase類,就可以用Junit進(jìn)行自動(dòng)測(cè)試了。2.JUnit優(yōu)點(diǎn)junit是在極限編程和重構(gòu)(refactor)中被極力推薦使用的工具,因?yàn)樵趯?shí)現(xiàn)自動(dòng)單元測(cè)試的情況下可以大大的提高開發(fā)的效率,但是實(shí)際上編寫測(cè)試代碼也是需要耗費(fèi)很多的時(shí)間和精力的,那么使用這個(gè)東東好處到底在哪里呢?筆者認(rèn)為是這樣的:極限編程要求在編寫代碼之前先寫測(cè)試,這樣可以強(qiáng)制你在寫代碼之前好好的思考代碼(方法)的功能和邏輯,否則編寫的代碼很不穩(wěn)定,那么你需要同時(shí)維護(hù)測(cè)試

3、代碼和實(shí)際代碼,這個(gè)工作量就會(huì)大大增加。因此在極限編程中,基本過程是這樣的:構(gòu)思 編寫測(cè)試代碼 編寫代碼 測(cè)試,而且編寫測(cè)試和編寫代碼都是增量式的,寫一點(diǎn)測(cè)一點(diǎn),在編寫以后的代碼中如果發(fā)現(xiàn)問題可以較快的追蹤到問題的原因,減小回歸錯(cuò)誤的糾錯(cuò)難度。重構(gòu)其好處和極限編程中是類似的,因?yàn)橹貥?gòu)也是要求改一點(diǎn)測(cè)一點(diǎn),減少回歸錯(cuò)誤造成的時(shí)間消耗。其他情況我們?cè)陂_發(fā)的時(shí)候使用junit寫一些適當(dāng)?shù)臏y(cè)試也是有必要的,因?yàn)橐话阄覀円彩切枰帉憸y(cè)試的代碼的,可能原來不是使用的junit,如果使用junit,而且針對(duì)接口(方法)編寫測(cè)試代碼會(huì)減少以后的維護(hù)工作,例如以后對(duì)方法內(nèi)部的修改(這個(gè)就是相當(dāng)于重構(gòu)的工作了)。

4、另外就是因?yàn)閖unit有斷言功能,如果測(cè)試結(jié)果不通過會(huì)告訴我們哪個(gè)測(cè)試不通過,為什么,而如果是像以前的一般做法是寫一些測(cè)試代碼看其輸出結(jié)果,然后再由自己來判斷結(jié)果是否正確,使用junit的好處就是這個(gè)結(jié)果是否正確的判斷是它來完成的,我們只需要看看它告訴我們結(jié)果是否正確就可以了,在一般情況下會(huì)大大提高效率。3.JUnit特性JUnit是一個(gè)開放源代碼的Java測(cè)試框架,用于編寫和運(yùn)行可重復(fù)的測(cè)試。他是用于單元測(cè)試框架體系xUnit的一個(gè)實(shí)例(用于java語言)。它包括以下特性:1、用于測(cè)試期望結(jié)果的斷言(Assertion)2、用于共享共同測(cè)試數(shù)據(jù)的測(cè)試工具3、用于方便的組織和運(yùn)行測(cè)試的測(cè)試套件

5、4、圖形和文本的測(cè)試運(yùn)行器4.JUnit運(yùn)用第一步:下載JUnit的jar包,下載地址:;第二步:安裝Eclipse安裝程序,已經(jīng)安裝好!第三步:利用junit在eclipse中開發(fā)自動(dòng)化腳本;JUnit可以和很多開發(fā)工具進(jìn)行集成來進(jìn)行單元測(cè)試,我們這里選取較常用的java開發(fā)工具Eclipse來使用JUnit4進(jìn)行單元測(cè)試。如何在開發(fā)工具Eclipse里進(jìn)行單元測(cè)試?第四步:首先啟動(dòng)Eclipse,并在Eclipse中建立一個(gè)java項(xiàng)目,項(xiàng)目名稱為JNuit_test1。如下圖所示:?jiǎn)螕簟就瓿伞考纯?;第五步:在建立好的?xiàng)目名稱(JNuit_test)上右鍵單擊【屬性】,系統(tǒng)彈出如下圖所示:

6、第六步:選擇java構(gòu)建路徑庫(kù)我們這里選擇前面下載的junit-4.12.jar包,故單擊【添加外部JAR(X)】按鈕,系統(tǒng)彈出如下對(duì)話框,選擇junit-4.12.jar包后,單擊【打開】鍵,如下圖所示:第七步:在建立好的項(xiàng)目名稱(JNuittest)上右鍵單擊【新建】【包】,取包名稱為andycpp,系統(tǒng)彈出如下圖所示:第八步:在建立好的類名稱【andycpp】上右鍵單擊【新建】類,取名稱為【Calculator】,如下圖所示:第九步:我們?cè)诖司帉懸粋€(gè)類,這是一個(gè)能夠簡(jiǎn)單實(shí)現(xiàn)加減乘除、平方、開方的計(jì)算器類,然后對(duì)這些功能進(jìn)行單元測(cè)試。這個(gè)類并不是很完美,我們故意保留了一些Bug用于演示,這

7、些Bug在注釋中都有說明。該類代碼如下:package andycpp;public class Calculator private static int result; / 靜態(tài)變量,用于存儲(chǔ)運(yùn)行結(jié)果 public void add(int n) result = result + n; public void substract(int n) result = result - 1; /Bug: 正確的應(yīng)該是 result =result-n public void multiply(int n) / 此方法尚未寫好 public void divide(int n) result =

8、result / n; public void square(int n) result = n * n; public void squareRoot(int n) for (; ; ) ; /Bug : 死循環(huán) public void clear() / 將結(jié)果清零 result = 0; public int getResult() return result; 第十步:生成JUnit測(cè)試框架,選中已經(jīng)編好的類,單擊右鍵【新建】JUnit測(cè)試用例,如下圖所示:?jiǎn)螕簟鞠乱徊健匡@示測(cè)試方法,下面我們只選擇四項(xiàng),如下圖所示:?jiǎn)螕簟就瓿伞挎I,系統(tǒng)創(chuàng)建了一個(gè)測(cè)試類,類名稱為CalculatorTe

9、st.java;代碼如下:第十一步:對(duì)上面測(cè)試類代碼進(jìn)行完善,代碼如下圖所示:package andycpp;import junit.framework.TestCase;import org.junit.Before;import org.junit.Test;public class CalculatorTest extends TestCase private static Calculator calculator = new Calculator(); Before public void setUp() throws Exception calculator.clear(); p

10、ublic void testAdd() calculator.add(2); calculator.add(3); assertEquals(5, calculator.getResult(); Test public void testSubstract() calculator.add(10); calculator.substract(8); System.out.println(calculator.getResult(); assertEquals(9, calculator.getResult(); Test public void testMultiply() System.o

11、ut.println();Testpublic void testDivide() calculator.add(8); calculator.divide(2); assertEquals(4, calculator.getResult(); 第十二步:對(duì)上面的測(cè)試類進(jìn)行完善后,右鍵單擊【CalculatorTest.java】【運(yùn)行方式】【JUnit測(cè)試】,測(cè)試結(jié)果如下:第十三步:為了查詢這兩個(gè)錯(cuò)誤,可以雙擊對(duì)應(yīng)錯(cuò)誤結(jié)果,在右側(cè)對(duì)應(yīng)方法有顯示,如下圖所示:上面的期望結(jié)果,若改為【5】,測(cè)試加的結(jié)果通過,如下圖所示:接著我們看看第二個(gè)錯(cuò)誤的原因,重新運(yùn)行測(cè)試,如下圖所示:通過上圖分析,是程序

12、邏輯存在錯(cuò)誤,故查看Calculator.java類,發(fā)現(xiàn)Substract的邏輯為如下圖所示:修改程序的邏輯表達(dá)式為result=result-n,再次執(zhí)行測(cè)試用例,如下圖所示:以上是一個(gè)簡(jiǎn)單的加減乘除運(yùn)算的邏輯程序,通過這個(gè)程序演示了JUnit測(cè)試框架在Eclipse中的運(yùn)用。5.JUnit重要元素A、TEST方法的前面使用Test標(biāo)注,以表明這是一個(gè)測(cè)試方法。對(duì)于方法的聲明也有如下要求:名字可以隨便取,沒有任何限制,但是返回值必須為void,而且不能有任何參數(shù)。Testpublic void testAdd() calculator.add(2); calculator.add(3); System.out.println(calculator.getResult(); assertEquals(5, calculator.getResult();B、Before注解:在每個(gè)測(cè)試方法之前執(zhí)行;C、After注解:在每個(gè)測(cè)試方法之后執(zhí)行;D、BeforeClass 注解:在所有方法執(zhí)行之前執(zhí)行;E、Aft

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論