JUnit+EclEmma进行覆盖测试
EclEmma簡(jiǎn)介
現(xiàn)在IT開發(fā)人員比以往任何時(shí)候都更加關(guān)注測(cè)試的重要性,沒(méi)有經(jīng)過(guò)良好測(cè)試的代碼更容易出問(wèn)題。在極限編程中,測(cè)試驅(qū)動(dòng)開發(fā)已經(jīng)被證明是一種有效提高軟件質(zhì)量的方法。在測(cè)試驅(qū)動(dòng)的開發(fā)方式中,軟件工程師在編寫功能代碼之前首先編寫測(cè)試代碼,這樣能從最開始保證程序代碼的正確性,并且能夠在程序的每次演進(jìn)時(shí)進(jìn)行自動(dòng)的回歸測(cè)試。測(cè)試對(duì)于軟件產(chǎn)品的成敗起著至關(guān)重要的作用,在極限編程領(lǐng)域,甚至有人提議任何未經(jīng)測(cè)試的代碼都應(yīng)該自動(dòng)從發(fā)布的產(chǎn)品中刪除。作者并不確信這個(gè)觀點(diǎn)是正確的,但是測(cè)試本身的質(zhì)量確實(shí)是一個(gè)需要高度關(guān)注的問(wèn)題。測(cè)試的覆蓋率是測(cè)試質(zhì)量的一個(gè)重要指標(biāo),我們需要工具來(lái)幫助我們進(jìn)行對(duì)軟件測(cè)試覆蓋的考察。
EclEmma就是這樣一個(gè)能幫助開發(fā)人員考察測(cè)試覆蓋率的優(yōu)秀的Eclipse開源插件。EclEmma在覆蓋測(cè)試領(lǐng)域是如此的優(yōu)秀,以致于它在過(guò)去不久的2006年成為了EclipseCommunityAwardsWinners決賽選手。雖然最后EclipseCheckstylePlugin取得了BestOpenSourceEclipse-basedDevelopertool的稱號(hào),但我們也可以由此看到EclEmma對(duì)開發(fā)人員的幫助是巨大的(EclipseCommunityAward的具體信息可以參閱參考資源)。
提到EclEmma首先就要說(shuō)到著名的Java覆蓋測(cè)試工具Emma。Emma是一個(gè)在SourceForge上進(jìn)行的開源項(xiàng)目(參閱參考資源)。從某種程度上說(shuō),EclEmma可以看作是Emma的一個(gè)圖形界面。在本文的參考文獻(xiàn)中,可以看到專門講述使用Emma的技術(shù)文章。
Emma的作者開發(fā)Emma之初,程序員已經(jīng)有了各種各樣優(yōu)秀的開源Java開發(fā)工具。舉例來(lái)說(shuō),我們有優(yōu)秀的集成開發(fā)環(huán)境Eclipse,有開源的JDK,有單元測(cè)試工具JUnit,有Ant這樣的項(xiàng)目管理工具,還可以用CVS或SubVersion來(lái)進(jìn)行源代碼版本的維護(hù)。當(dāng)時(shí)看來(lái),也許唯一缺少的就是一個(gè)開源的覆蓋測(cè)試工具了。Emma就是為了填補(bǔ)這項(xiàng)空白而生的。現(xiàn)在的情況已經(jīng)和Emma誕生的時(shí)候不一樣的。時(shí)至今日,已經(jīng)有了不少的覆蓋測(cè)試工具。例如Coverlipse是一個(gè)基于Eclipse的覆蓋測(cè)試插件。其他還有Cobertura、Quilt和JCoverage等。但是Emma具有一些非常優(yōu)秀的特性使得它更適合被廣泛的使用。和Coverlipse等工具比起來(lái),Emma是開源的,同時(shí)它對(duì)應(yīng)用程序執(zhí)行速度的影響非常小。
EclEmma的出現(xiàn)彌補(bǔ)了Emma用戶一個(gè)大的遺憾——缺乏圖形界面以及對(duì)集成開發(fā)環(huán)境的支持。將Eclipse和Emma這兩個(gè)在各自領(lǐng)域最為優(yōu)秀的工具結(jié)合起來(lái),這就是EclEmma為我們提供的。接下來(lái),一起看看EclEmma為開發(fā)人員提供了什么。
4.4.2? 添加EclEmma支持
????? 在官方網(wǎng)站http://sourceforge.net/projects/eclemma/ 下載EclEmma壓縮包。
圖1 EclEmma壓縮包
????? 解壓eclemma-2.3.3.zip文件,得到plugins文件夾和features文件夾。
圖2 ?解壓ZIP文件
? ? ?將解壓后的文件,拷貝到MyEclipse安裝目錄下的dropins即可, ? ?運(yùn)行MyEclipse(如果已經(jīng)運(yùn)行,請(qǐng)重啟MyEclipse),即可集成EclEmma成功。
筆者發(fā)現(xiàn)該方法,是最好的方法,比在線安裝和本地逐個(gè)文件夾拷貝要好了N多倍!!!!
在項(xiàng)目右鍵,出現(xiàn)如下所示的"Coverage as表示已經(jīng)成功了",或者工具欄出現(xiàn)快捷圖標(biāo)也是成功了。
?
/******************************下面是針對(duì)成績(jī)判斷做的JUnit+EclEmma的綜合測(cè)試案例******************************/
package com.aaa.vo; /*** 成績(jī)類;* @author 張晨光老師 */ public class Grade {public String getLevel(int score){String result="";if(score<60){result="不及格";}else if(score<70){result="及格";}else if(score<80){result="中等";}else if(score<90){result="良好";}else if(score<=100){result="優(yōu)秀";}return result;} }?
package com.aaa.test; /**測(cè)試類* @author 張晨光老師*/ import java.util.Scanner; import junit.framework.TestCase; import com.aaa.vo.Grade; public class TestGrade extends TestCase {//1.私有對(duì)象;Grade grade=new Grade();//public void testGetLevel(){int x;System.out.println("請(qǐng)輸出一個(gè)數(shù)字");Scanner sc=new Scanner(System.in);x=sc.nextInt();assertEquals("及格",grade.getLevel(x));} }然后在項(xiàng)目,點(diǎn)擊右鍵選擇"Coverage as"-->Junit Test,這時(shí)候出來(lái)控制臺(tái)界面,需要用戶輸入數(shù)字
?
?
?
Cpverage 界面如圖所示:
Grade類的覆蓋測(cè)試圖:
?TestGrade類的覆蓋測(cè)試圖:
在Coverage 視圖界面,選擇導(dǎo)出,以網(wǎng)頁(yè)報(bào)表的格式導(dǎo)出。
?
總結(jié)
以上是生活随笔為你收集整理的JUnit+EclEmma进行覆盖测试的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 河南智游科技 超市管理系统
- 下一篇: 郑州尚新科技--J2EE考试题