Junit自動(dòng)化測(cè)試工具_(dá)第1頁(yè)
Junit自動(dòng)化測(cè)試工具_(dá)第2頁(yè)
Junit自動(dòng)化測(cè)試工具_(dá)第3頁(yè)
Junit自動(dòng)化測(cè)試工具_(dá)第4頁(yè)
Junit自動(dòng)化測(cè)試工具_(dá)第5頁(yè)
已閱讀5頁(yè),還剩81頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第七章

Junit自動(dòng)化測(cè)試工具主講人:邢慧芬內(nèi)容提要7.1Junit簡(jiǎn)介7.1.1Junit簡(jiǎn)介7.1.2Junit的安裝

7.2Junit框架7.2.1

軟件自動(dòng)化測(cè)試框架7.2.2JUnit核心類(lèi)及接口7.2.3JUnit單元測(cè)試的步驟

7.3Eclipse中Junit的使用內(nèi)容提要7.1Junit簡(jiǎn)介7.1.1Junit簡(jiǎn)介7.1.2Junit的安裝

7.2Junit框架7.2.1

軟件自動(dòng)化測(cè)試框架7.2.2JUnit核心類(lèi)及接口7.2.3JUnit單元測(cè)試的步驟

7.3Eclipse中Junit的使用內(nèi)容回顧——單元測(cè)試單元測(cè)試集成測(cè)試功能測(cè)試壓力/負(fù)荷測(cè)試驗(yàn)收測(cè)試單元測(cè)試單元測(cè)試是開(kāi)發(fā)者編寫(xiě)的一小段代碼,用于檢驗(yàn)被測(cè)代碼的一個(gè)很小的、很明確的功能是否正確通常而言,一個(gè)單元測(cè)試是用于判斷某個(gè)特定條件(或者場(chǎng)景)下某個(gè)特定函數(shù)的行為單元測(cè)試兩個(gè)重要的慨念樁模塊(stub):指模擬被測(cè)模塊所調(diào)用的模塊驅(qū)動(dòng)模塊(Driver):指模擬被測(cè)模塊的上級(jí)模塊。驅(qū)動(dòng)模塊常用來(lái)接受測(cè)試數(shù)據(jù),啟動(dòng)被測(cè)模塊并輸出結(jié)果。單元測(cè)試的方法人工靜態(tài)分析:通過(guò)人工閱讀代碼的方式來(lái)查找代碼中存在的錯(cuò)誤自動(dòng)靜態(tài)分析:使用代碼復(fù)查工具,主要用來(lái)發(fā)現(xiàn)語(yǔ)法特征錯(cuò)誤自動(dòng)動(dòng)態(tài)測(cè)試:用工具自動(dòng)生成測(cè)試用例并執(zhí)行被測(cè)程序,主要用來(lái)發(fā)現(xiàn)行為特征錯(cuò)誤人工動(dòng)態(tài)測(cè)試:人工設(shè)定程序的輸入和預(yù)期輸出,執(zhí)行程序,判斷實(shí)際輸出是否符合預(yù)期,若不符則自動(dòng)報(bào)告錯(cuò)誤。利用JUnit完成的便是人工動(dòng)態(tài)測(cè)試單元測(cè)試的必要性帶來(lái)比功能測(cè)試更廣范圍的測(cè)試覆蓋讓團(tuán)隊(duì)協(xié)作成為可能能夠防止衰退,降低對(duì)調(diào)試的需要能為我們帶來(lái)重構(gòu)的勇氣能改進(jìn)實(shí)現(xiàn)設(shè)計(jì)當(dāng)作開(kāi)發(fā)者文檔使用內(nèi)容提要7.1Junit簡(jiǎn)介7.1.1Junit簡(jiǎn)介7.1.2Junit的安裝

7.2Junit框架7.2.1

軟件自動(dòng)化測(cè)試框架7.2.2JUnit核心類(lèi)及接口7.2.3JUnit單元測(cè)試的步驟

7.3Eclipse中Junit的使用7.1.1Junit簡(jiǎn)介JUnit是Java社區(qū)中知名度最高的單元測(cè)試工具。由ErichGamma和KentBeck共同開(kāi)發(fā)完成Junit在代碼驅(qū)動(dòng)單元測(cè)試框架家族里無(wú)疑是最為成功的一例。在“最佳Java性能監(jiān)視/測(cè)試工具”類(lèi)別里,多次獲得“JavaWorld編者精品獎(jiǎng)(Editors’ChoiceAwards)”。開(kāi)源軟件支持語(yǔ)言Smalltalk,Java,C++,Perl等等支持的IDEJBuilder,VisualAge,Eclipse等JUnit功能可供選擇的其他前端或者test-runner,用來(lái)顯示你的測(cè)試結(jié)果用單獨(dú)的classloader來(lái)運(yùn)行每個(gè)單元測(cè)試,以避免副作用標(biāo)準(zhǔn)的資源初始化和回收方式(setUp和tearDown)各種不同的assert方法,讓你檢查測(cè)試結(jié)果的操作變得更容易同流行的工具,比如Ant,以及流行IDE比如Eclipse,JBuilder整合JUnit的好處開(kāi)源工具,可以免費(fèi)使用,可以找到很多實(shí)際項(xiàng)目中的應(yīng)用示例。由于源碼開(kāi)放,開(kāi)發(fā)者還可以根據(jù)需要擴(kuò)展JUnit功能可以將測(cè)試代碼和產(chǎn)品代碼分開(kāi)測(cè)試代碼編寫(xiě)容易,功能強(qiáng)大自動(dòng)檢驗(yàn)結(jié)果并且提供立即的反饋易于集成到開(kāi)發(fā)的構(gòu)建過(guò)程中,在軟件的構(gòu)建過(guò)程中完成對(duì)程序的單元測(cè)試測(cè)試包結(jié)構(gòu)便于組織和集成運(yùn)行,支持圖形交互模式和文本交互模式內(nèi)容提要7.1Junit簡(jiǎn)介7.1.1Junit簡(jiǎn)介7.1.2Junit的安裝

7.2Junit框架7.2.1

軟件自動(dòng)化測(cè)試框架7.2.2JUnit核心類(lèi)及接口7.2.3JUnit單元測(cè)試的步驟

7.3Eclipse中Junit的使用7.1.2Junit的安裝Java的JUnit網(wǎng)上免費(fèi)下載地址http:///projects/junit/7.1.2Junit的安裝解包JUnit:

文件/目錄描述junit.jarJUnit框架結(jié)構(gòu)、擴(kuò)展和測(cè)試運(yùn)行器的二進(jìn)制發(fā)布src.jarJUnit的源代碼,包括一個(gè)

Ant的buildfile文件junit是個(gè)目錄,內(nèi)有JUnit自帶的用JUnit編寫(xiě)的測(cè)試示例程序javadocJUnit完整的API文檔doc一些文檔和文章,包括“TestInfected:ProgrammersLoveWritingTests”和其它一些資料,可以幫助我們?nèi)腴T(mén)。7.1.2Junit的安裝要安裝和使用JUnit是很容易的,只需三個(gè)步驟:(1)下載JUnit軟件(junit4.10.zip);(2)將下載的junit.zip解壓到你指定的目錄(C:\junit4.10)(3)設(shè)置環(huán)境變量Variable:CLASSPATHVariableValue:.;InstallPath/junit.jar(.;C:\junit4.10\junit-4.10.jar)7.1.2Junit的安裝測(cè)試運(yùn)行(進(jìn)入命令提示符安裝目錄下)javajunit.textui(swingui,awtui).TestRunnerjunit.samples.AllTests內(nèi)容提要7.1Junit簡(jiǎn)介7.1.1Junit簡(jiǎn)介7.1.2Junit的安裝

7.2Junit框架7.2.1

軟件自動(dòng)化測(cè)試框架7.2.2JUnit核心類(lèi)及接口7.2.3JUnit單元測(cè)試的步驟

7.3Eclipse中Junit的使用內(nèi)容提要7.1Junit簡(jiǎn)介7.1.1Junit簡(jiǎn)介7.1.2Junit的安裝

7.2Junit框架7.2.1

軟件自動(dòng)化測(cè)試框架7.2.2JUnit核心類(lèi)及接口7.2.3JUnit單元測(cè)試的步驟

7.3Eclipse中Junit的使用7.2.1軟件自動(dòng)化測(cè)試框架Junit框架是一個(gè)典型composite模式,TestSuite可以容納任何派生自test的對(duì)象,當(dāng)調(diào)用TestSuite對(duì)象run()方法時(shí),會(huì)遍歷自己容納的對(duì)象,逐個(gè)調(diào)用它們的run()方法。TestCase:測(cè)試用例,是對(duì)測(cè)試目標(biāo)進(jìn)行測(cè)試的方法和過(guò)程集合TestSuite:測(cè)試包,是測(cè)試用例的集合,可容納多個(gè)測(cè)試用例;TestResult:測(cè)試結(jié)果的描述記錄;TestListener:測(cè)試過(guò)程中的事件監(jiān)聽(tīng)者。7.2.1軟件自動(dòng)化測(cè)試框架7.2.1軟件自動(dòng)化測(cè)試框架每個(gè)測(cè)試方法所發(fā)生與預(yù)期不一致的狀況描述,稱(chēng)其測(cè)試失敗元素(TestFailure)。其中TestCase是框架的核心,它建立了TestCase和TestSuite之間的關(guān)聯(lián),為整個(gè)框架做了擴(kuò)展預(yù)留。其余的類(lèi)用來(lái)支援TestCase,TestSuite用來(lái)聚合多個(gè)TestCase,Assert類(lèi)實(shí)現(xiàn)期望值(expected)和實(shí)際值(actual)的驗(yàn)證,TestResult收集所有測(cè)試用例執(zhí)行的后果。內(nèi)容提要7.1Junit簡(jiǎn)介7.1.1Junit簡(jiǎn)介7.1.2Junit的安裝

7.2Junit框架7.2.1

軟件自動(dòng)化測(cè)試框架7.2.2JUnit核心類(lèi)及接口7.2.3JUnit單元測(cè)試的步驟

7.3Eclipse中Junit的使用JUnit核心類(lèi)及接口(1)JUnit核心類(lèi)及接口(2)TestRunner(測(cè)試運(yùn)行器)沒(méi)有TestRunner接口,只有一個(gè)所有TestRunner都繼承的BaseTestRunner執(zhí)行測(cè)試并提供相關(guān)的結(jié)果的統(tǒng)計(jì)信息包含三個(gè)TestRunner類(lèi)一個(gè)用于文本控制臺(tái)一個(gè)用于Swing還有一個(gè)AWT(遺產(chǎn)代碼,很少有人用)JUnit核心類(lèi)及接口(3)TestRunner(測(cè)試運(yùn)行器)實(shí)際運(yùn)用中的SwingtestrunnerGreenbar通過(guò)測(cè)試Redbar測(cè)試失敗JUnit核心類(lèi)及接口(3)JUnit核心類(lèi)及接口(3)JUnit核心類(lèi)及接口(4)TestCase(測(cè)試用例)用抽象類(lèi)來(lái)定義測(cè)試中的固定方法。TestCase是Test接口的抽象實(shí)現(xiàn)。Test接口是運(yùn)行和收集測(cè)試的結(jié)果,它使用了Composite設(shè)計(jì)模式,Test接口定義了兩個(gè)方法:PublicintcountTestCase():統(tǒng)計(jì)執(zhí)行測(cè)試用例(TestCase)的數(shù)量。如果是測(cè)試包則返回整個(gè)包中所有測(cè)試用例的統(tǒng)計(jì)值。Publicvoidrun(TestResult):TestResult參數(shù)用來(lái)啟動(dòng)測(cè)試,記錄測(cè)試過(guò)程JUnit核心類(lèi)及接口(5)TestCase(測(cè)試用例)把具有公共行為的測(cè)試歸入一組擴(kuò)展了JUnit的TestCase類(lèi)的類(lèi)。它以testXXX方法的形式包含一個(gè)或多個(gè)測(cè)試典型的TestCase包含兩個(gè)主要部件Fixture測(cè)試固件釋放資源,一個(gè)測(cè)試用例可以包含若干個(gè)testXxx()測(cè)試方法,測(cè)試用例測(cè)試一個(gè)或多個(gè)類(lèi)API接口的正確性,當(dāng)然在調(diào)用類(lèi)API時(shí),需要事先創(chuàng)建這個(gè)類(lèi)的對(duì)象及一些關(guān)聯(lián)的對(duì)象,這組對(duì)象就稱(chēng)為測(cè)試固件(Fixture),相當(dāng)于測(cè)試用例的“工作對(duì)象”單元測(cè)試JUnit核心類(lèi)及接口(6)TestCase(測(cè)試用例)Fixture管理資源,復(fù)用配置代碼運(yùn)行一個(gè)或多個(gè)測(cè)試所需的公用資源或者數(shù)據(jù)集合TestCase通過(guò)setUp和tearDown方法來(lái)創(chuàng)建和銷(xiāo)毀fixture典型應(yīng)用數(shù)據(jù)庫(kù)連接,生成輸入文件JUnit核心類(lèi)及接口(7)TestCase(測(cè)試用例)創(chuàng)建單元測(cè)試方法繼承自TestCase的一組assert方法封裝了最常見(jiàn)的測(cè)試任務(wù),這些assert方法可以極大地簡(jiǎn)化單元測(cè)試的編寫(xiě)Assert超類(lèi)所提供的8個(gè)核心方法JUnit核心類(lèi)及接口(8)TestCase(測(cè)試用例)創(chuàng)建單元測(cè)試方法除了Assert提供的方法之外,TestCase還實(shí)現(xiàn)了10個(gè)它自己的方法coutTestCases,CreateResult,getName,run,runBare,setName,setup,teardown,toStringTestCase的10個(gè)自己的方法JUnit核心類(lèi)及接口(9)TestCase(測(cè)試用例)這18個(gè)方法共同為你提供了使用JUnit編寫(xiě)測(cè)試的全部功能一個(gè)簡(jiǎn)單的實(shí)例(1)publicclassSampleCaculator{ //計(jì)算兩整數(shù)之和

publicintadd(intaugend,intaddend){ returnaugend+addend; } //計(jì)算兩整數(shù)之差

publicintsubtration(intminuend,intsubtrahend){ returnminuend-subtrahend; }}一個(gè)簡(jiǎn)單的實(shí)例(2)importjunit.framework.*;publicclassSampleCaculatorTestextendsTestCase{ SampleCalculatorcalculator=newSampleCalculator(); publicvoidtestAdd(){ intresult=calculator.add(50,20); assertEquals(70,result); } publicvoidtestSubtration(){ intresult=calculator.subtration(50,20); assertEquals(30,result); }}編寫(xiě)TestCase子類(lèi)注意事項(xiàng):編寫(xiě)TestCase的子類(lèi)時(shí),需要注意以下事項(xiàng):編寫(xiě)的測(cè)試類(lèi)必須繼承于TestCase抽象類(lèi)一次測(cè)試只測(cè)試一個(gè)對(duì)象,一個(gè)測(cè)試方法之測(cè)試一個(gè)對(duì)象中的方法最好在A(yíng)ssert函數(shù)中給出失敗的原因,這樣有助于查錯(cuò)在setUp和tearDown中的代碼不應(yīng)該與測(cè)試有關(guān),而應(yīng)與全局有關(guān)擴(kuò)展了JUnit的TestCase類(lèi)的類(lèi)。它以testXXX方法的形式包含一個(gè)或多個(gè)測(cè)試方法Junit測(cè)試過(guò)程TestCase實(shí)例被運(yùn)行時(shí),依照以下步驟運(yùn)行:

1.創(chuàng)建測(cè)試用例的實(shí)例。

2.調(diào)用setUp()方法,執(zhí)行一些初始化工作

3.運(yùn)行testXxx()測(cè)試方法。

4.調(diào)用tearDown()方法,執(zhí)行銷(xiāo)毀對(duì)象。JUnit核心類(lèi)及接口(10)TestSuite(測(cè)試集合)testsuite是把多個(gè)相關(guān)測(cè)試歸入一組便捷方式若你沒(méi)有提供自己的TestSuite,testrunner會(huì)自動(dòng)創(chuàng)建一個(gè)缺省的TestSuite不能滿(mǎn)足時(shí),可能會(huì)想組合多個(gè)suite,把它們作為主suite的一部分,這些suite來(lái)自幾個(gè)不同的packageJUnit核心類(lèi)及接口(11)TestSuite(測(cè)試集合)通常情況下TestAll類(lèi)僅僅包括一個(gè)靜態(tài)的suite方法,這個(gè)方法會(huì)注冊(cè)應(yīng)用程序需要定期執(zhí)行的所有Test對(duì)象(包括TestCase對(duì)象和TestSuite對(duì)象),下面是一個(gè)典型的TestAll類(lèi)TestAll類(lèi)importjunit.framework.Test;importjunit.framework.TestSuite;importjunitbook.sampling.TestDefaultController;publicclassTestAllextendTestCase{publicstaticTestsuite(){TestSuitesuite=newTestSuite("Alltestsfrompart1");suite.addTestSuite(SampleCaculatorTest.class);suite.addTestSuite(TestDefaultController.class);returnsuite;}}TestSuite處理測(cè)試用例的6個(gè)公約測(cè)試用例必須是共有類(lèi)(Public)測(cè)試用例必須繼承于TestCase類(lèi)測(cè)試用例的測(cè)試方法必須是共有的(Public)測(cè)試用例的測(cè)試方法必須被聲明為Void測(cè)試用例的測(cè)試方法的前置名詞必須是Test測(cè)試用例的測(cè)試方法無(wú)任何傳遞參數(shù)JUnit核心類(lèi)及接口(12)TestResult所有的TestSuite都有一個(gè)對(duì)應(yīng)的TestResult負(fù)責(zé)收集TestCase的執(zhí)行結(jié)果。儲(chǔ)存了所有測(cè)試的詳細(xì)情況,是通過(guò)還是失敗。失敗則會(huì)創(chuàng)建一個(gè)TestFailure對(duì)象TestRunner使用TestResult來(lái)報(bào)告測(cè)試結(jié)果。沒(méi)有TestFailure對(duì)象進(jìn)度條就用綠色,否則進(jìn)度條用紅色并輸出失敗測(cè)試的數(shù)目和他們的stacktrace,將測(cè)試結(jié)果轉(zhuǎn)發(fā)到TestListener處理JUnit核心類(lèi)及接口(13)TestResultJUnit區(qū)分失敗和錯(cuò)誤失敗:是可以預(yù)期的,代碼的改變不時(shí)會(huì)造成斷言失敗,你只要修正代碼,斷言就可以再次通過(guò)錯(cuò)誤:比如常規(guī)程序拋出的異常,則是測(cè)試時(shí)不可預(yù)料的JUnit核心類(lèi)及接口(14)TestListener幫助對(duì)象訪(fǎng)問(wèn)TestResult并創(chuàng)建有用的報(bào)告。雖然Testlistener接口是JUnit框架的重要部分,但是你編寫(xiě)自己的測(cè)試時(shí)不必實(shí)現(xiàn)這個(gè)接口。只有需要擴(kuò)展JUnit框架時(shí)才會(huì)需要實(shí)現(xiàn)這個(gè)接口TestFailure是“失敗”狀況的收集類(lèi),解釋每次測(cè)試執(zhí)行過(guò)程中出現(xiàn)的異常情況。其toString()方法返回“失敗”狀況的簡(jiǎn)要描述內(nèi)容提要7.1Junit簡(jiǎn)介7.1.1Junit簡(jiǎn)介7.1.2Junit的安裝

7.2Junit框架7.2.1

軟件自動(dòng)化測(cè)試框架7.2.2JUnit核心類(lèi)及接口7.2.3JUnit單元測(cè)試的步驟

7.3Eclipse中Junit的使用JUnit單元測(cè)試的步驟創(chuàng)建一個(gè)繼承自junit.framework.TestCase的類(lèi)創(chuàng)建一個(gè)以“test”名字開(kāi)頭的publicvoid方法Ex:publicvoidtestDeleteCustomer()使用諸如assertEquals()的方法測(cè)試執(zhí)行結(jié)果JUnit單元測(cè)試的步驟(1)JUnit成員三重唱,共同產(chǎn)生測(cè)試結(jié)果當(dāng)你需要編寫(xiě)更多的TestCase的時(shí)候,你可以創(chuàng)建更多的TestCase對(duì)象。當(dāng)你需要一次執(zhí)行多個(gè)TestCase對(duì)象的時(shí)候,您可以創(chuàng)建一個(gè)TestSuite對(duì)象或使用缺省的TestSuite對(duì)象進(jìn)行封裝。為了執(zhí)行TestSuite,需要使用TestRunner。通過(guò)TestRunner的執(zhí)行生成TestResult對(duì)象JUnit單元測(cè)試的步驟(2)重載setUp(),封裝測(cè)試環(huán)境初始化及測(cè)試數(shù)據(jù)準(zhǔn)備設(shè)計(jì)測(cè)試方法,以testXXX命名在測(cè)試方法中使用斷言方法如assertEquals(),assertTrue()等設(shè)計(jì)測(cè)試套件,或使用缺省的測(cè)試套件,調(diào)用TestRunner執(zhí)行測(cè)試腳本,生成測(cè)試結(jié)果重載tearDown()析構(gòu)測(cè)試環(huán)境,執(zhí)行收尾動(dòng)作待測(cè)類(lèi)public

class

Calculator{public

int

add(inta,intb){ returna+b;}public

int

minus(inta,intb){ returna-b;}public

int

multiply(inta,intb){ returna*b;}public

int

divide(inta,intb)throwsException{if(0==b){ throw

newException("除數(shù)不能為零!");}returna/b;}}該類(lèi)的測(cè)試類(lèi)[1/4]public

class

CalculatorTest

extends

TestCase{ privateCalculatorcal; public

void

setUp(){ cal=newCalculator(); } public

void

tearDown(){

}測(cè)試類(lèi)必須以TestCase為父類(lèi)

每個(gè)測(cè)試方法執(zhí)行前都會(huì)調(diào)用該方法析構(gòu)測(cè)試環(huán)境,執(zhí)行收尾動(dòng)作生成對(duì)象該類(lèi)的測(cè)試類(lèi)[2/4]

public

void

testAdd(){

intresult=cal.add(1,2);

Assert.assertEquals

(3,result); } public

void

testMinus(){

intresult=cal.minus(1,2);

Assert.assertEquals(-1,result); } public

void

testMultiply(){

intresult=cal.multiply(2,3);

Assert.assertEquals(6,result);

}Junit4測(cè)試方法需滿(mǎn)足:1)Public的2)Void的3)無(wú)方法參數(shù)4)方法名稱(chēng)必須以test開(kāi)頭斷言調(diào)用該方法該類(lèi)的測(cè)試類(lèi)[3/4]

public

void

testDivide(){

intresult=0; try{ result=cal.divide(6,4); } catch(Exceptione){

e.printStackTrace();

Assert.fail(); }

Assert.assertEquals(1,result);

}期望該行代碼永遠(yuǎn)不會(huì)被執(zhí)行,斷言失敗,停止執(zhí)行立即失敗該類(lèi)的測(cè)試類(lèi)[4/4]

public

void

testDivide2(){

Throwable

tx=null; try{ cal.divide(4,0); Assert.fail();

}

catch(Exceptionex){

tx=ex; }

Assert.assertNotNull(tx);

Assert.assertEquals(Exception.class,tx.getClass());

Assert.assertEquals("除數(shù)不能為零!",tx.getMessage()); }}一個(gè)方法可以有多個(gè)測(cè)試方法,輸入的不同情況會(huì)有不同的testcase出現(xiàn)tx是Exception類(lèi)型的一旦發(fā)生異常,則tx一定不為空期望該行代碼永遠(yuǎn)不會(huì)被執(zhí)行,斷言失敗,停止執(zhí)行立即失敗同時(shí)測(cè)試多個(gè)類(lèi)(1)現(xiàn)有兩個(gè)測(cè)試類(lèi)CalculatorTest.javaLargestTest.java如何一下全部運(yùn)行?如何自動(dòng)化測(cè)試?同時(shí)測(cè)試多個(gè)類(lèi)(2)public

class

TestAll

extends

TestCase{ public

staticTestsuite() {

TestSuitesuite=new

TestSuite();

suite.addTestSuite(CalculatorTest.class);

suite.addTestSuite(LargestTest.class); return

suite; }}必須是static返回一個(gè)Test類(lèi)型方法名必須是suite生成一個(gè)TestSuite測(cè)試類(lèi)對(duì)應(yīng)的class對(duì)象,還可增加TestSuite的對(duì)象返回suite,TestSuite

實(shí)現(xiàn)了Test接口內(nèi)容提要7.1Junit簡(jiǎn)介7.1.1Junit簡(jiǎn)介7.1.2Junit的安裝

7.2Junit框架7.2.1

軟件自動(dòng)化測(cè)試框架7.2.2JUnit核心類(lèi)及接口7.2.3JUnit單元測(cè)試的步驟

7.3Eclipse中Junit的使用7.3Eclipse中Junit的使用首先新建一個(gè)項(xiàng)目叫JUnit_Test,我們編寫(xiě)一個(gè)Calculator類(lèi),這是一個(gè)能夠簡(jiǎn)單實(shí)現(xiàn)加減乘除、平方、開(kāi)方的計(jì)算器類(lèi),然后對(duì)這些功能進(jìn)行單元測(cè)試。這個(gè)類(lèi)并不是很完美,我們故意保留了一些Bug用于演示,這些Bug在注釋中都有說(shuō)明。該類(lèi)代碼如下:package.chu;publicclassCalculator{privatestaticintresult;//靜態(tài)變量,用于存儲(chǔ)運(yùn)行結(jié)果

publicvoidadd(intn){

result=result+n;}publicvoidsubstract(intn){

result=result-1;//Bug:正確的應(yīng)該是result=result-n}publicvoidmultiply(intn){}//此方法尚未寫(xiě)好

publicvoiddivide(intn){

result=result/n;}publicvoidsquare(intn){

result=n*n;}publicvoidsquareRoot(intn){for(;;);//Bug:死循環(huán)

}publicvoidclear(){//將結(jié)果清零

result=0;}publicintgetResult(){returnresult;}}在Eclipse下使用JUnit(1)單元測(cè)試代碼把它和被測(cè)試代碼混在一起,這顯然會(huì)照成混亂建議您分別為單元測(cè)試代碼與被測(cè)試代碼創(chuàng)建單獨(dú)的目錄,并保證測(cè)試代碼和被測(cè)試代碼使用相同的包名。這樣既保證了代碼的分離,同時(shí)還保證了查找的方便遵照這條原則,我們?cè)陧?xiàng)目JUnit_Test根目錄下添加一個(gè)新目錄testsrc,并把它加入到項(xiàng)目源代碼目錄中在Eclipse下使用JUnit(2)將JUnit4單元測(cè)試包引入這個(gè)項(xiàng)目:在該項(xiàng)目上點(diǎn)右鍵,點(diǎn)“屬性”,如圖:第二步,將JUnit4單元測(cè)試包引入這個(gè)項(xiàng)目:在該項(xiàng)目上點(diǎn)右鍵,點(diǎn)“屬性”,如圖:在彈出的屬性窗口中,首先在左邊選擇“JavaBuildPath”,然后到右上選擇“Libraries”標(biāo)簽,之后在最右邊點(diǎn)擊“AddLibrary…”按鈕,如下圖所示:然后在新彈出的對(duì)話(huà)框中選擇JUnit4并點(diǎn)擊確定,如上圖所示,JUnit4軟件包就被包含進(jìn)我們這個(gè)項(xiàng)目了。在Eclipse下使用JUnit(3)在類(lèi)上右擊,選擇“new”->“JUnitTestCase”新建一個(gè)CalculatorTest類(lèi),用來(lái)測(cè)試Calculator類(lèi)選擇剛剛建立的文件夾“JUnit_Test/testscr”,選中setUp()和tearDown(),然后點(diǎn)擊“Next”選擇要測(cè)試的方法,我們僅對(duì)“加、減、乘、除”四個(gè)方法進(jìn)行測(cè)試點(diǎn)擊“finish”,跳出需要添加JUnit.jar包,點(diǎn)擊“OK”在Eclipse下使用JUnit(4)之后系統(tǒng)會(huì)自動(dòng)生成一個(gè)新類(lèi)CalculatorTest,里面包含一些空的測(cè)試用例。你只需要將這些測(cè)試用例稍作修改即可使用。完整的CalculatorTest代碼如下:package.chu;importstaticorg.junit.Assert.*;importorg.junit.After;importorg.junit.Before;importorg.junit.Ignore;importorg.junit.Test;publicclassCalculatorTest{privatestaticCalculatorcalculator=newCalculator();@BeforepublicvoidsetUp()throwsException{

calculator.clea

溫馨提示

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

評(píng)論

0/150

提交評(píng)論