資源描述:
《追求代碼質(zhì)量(7)-可重復(fù)的系統(tǒng)測(cè)試-java開發(fā)java經(jīng)驗(yàn)技巧》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、追求代碼質(zhì)量(7):可重復(fù)的系統(tǒng)測(cè)試-編程開發(fā)技術(shù)追求代碼質(zhì)量(7):可重復(fù)的系統(tǒng)測(cè)試原文出處:IBM中國(guó)在本質(zhì)上,像JUnit和TestNG—樣的測(cè)試框架方便了可重復(fù)性測(cè)試的創(chuàng)建。由于這些框架利用了簡(jiǎn)單Boolean邏輯(以Hassert?方法的形式)的可靠性,這使得無(wú)人為干預(yù)而運(yùn)行測(cè)試成為可能。事實(shí)上,自動(dòng)化是測(cè)試框架的主耍優(yōu)點(diǎn)之一——我能夠編寫一個(gè)用于斷言具休行為的相當(dāng)復(fù)雜的測(cè)試,口一旦這些行為有所改變,框架就會(huì)報(bào)告一個(gè)人人都能明白的錯(cuò)誤。利用成熟的測(cè)試框架會(huì)帶來(lái)框蝦述重復(fù)性的優(yōu)點(diǎn),這是顯而易見的。憧邏輯你可重復(fù)性卻取決于您。例如,考慮創(chuàng)建用于驗(yàn)證Web應(yīng)用程序的可重復(fù)測(cè)試的情況,一些
2、JUnit擴(kuò)展框架(如JWebUnit和HttpUnit)在協(xié)助自動(dòng)化的Web測(cè)試方面非常好用。但是,使測(cè)試的2plumbing?也重復(fù)則是開發(fā)人員的任務(wù),而這在部署Web應(yīng)用程序資源吋很難進(jìn)行。實(shí)際的JWebUnit測(cè)試的構(gòu)造過(guò)程相當(dāng)簡(jiǎn)單,如清單1所示:清單1.一個(gè)簡(jiǎn)單的JWebUnit測(cè)試packagetest.come.acme,widget.Web;importnet.sourceforge,jwebunit.WebTester;importjunit.framework.TestCase;publicclassWidgetCreationTestextendsTestCase{pr
3、ivateWebTestertester;protectedvoidsetUp()throwsException{this,tester=newWebTester();this,tester.getTestContext().setBaseUrl(z,http://localhost:8080/widget/z,);}publicvoidtestWidgetCreation(){this,tester.beginAt(,z/CreateWidget.;this.tester.setFormElement("widget—id〃,〃893一44〃);this,tester.setFormEle
4、ment(〃parl-〃rl45-3〃);this,tester.submit();this,tester.assertTextPresent(/z893-44/z);this,tester.assertTextPresent(^successfullycreated./z);這個(gè)測(cè)試與一個(gè)Web應(yīng)用程序通信,并試圖創(chuàng)建一個(gè)基于該交互的小部件。該測(cè)試隨后校驗(yàn)此部件是否被成功創(chuàng)建。讀過(guò)本系列之前部分的讀者們也許會(huì)注意到該測(cè)試的一個(gè)微妙的可重復(fù)性問(wèn)題。您注意到了嗎?如果這個(gè)測(cè)試用例超綜運(yùn)行兩次會(huì)怎樣呢?由這個(gè)小部件實(shí)例(即,widget-id)的驗(yàn)證方而可以判斷出,可以安全地做出這樣的假設(shè),即此
5、應(yīng)用程序中的數(shù)據(jù)庫(kù)約束很可能會(huì)阻止創(chuàng)建一個(gè)己經(jīng)存在的額外的小部件。由于缺少了一個(gè)在運(yùn)行另一個(gè)測(cè)試前刪除此測(cè)試用例的口標(biāo)小部件的過(guò)程,如果再連續(xù)運(yùn)行兩次,這個(gè)測(cè)試用例非常有可能會(huì)失敗。幸運(yùn)的是,如前面文章中所探討的那樣,有一個(gè)有助于數(shù)據(jù)庫(kù)-依賴性(database-dependent)測(cè)試用例可重復(fù)性的機(jī)制即DbUnito使用DbUnit改進(jìn)?清單1?中的測(cè)試用例來(lái)使用DbUnit是非常簡(jiǎn)單的。DbUnit只需要一些插入數(shù)據(jù)庫(kù)的數(shù)據(jù)和一個(gè)相應(yīng)的數(shù)據(jù)庫(kù)連接,如清單2所示:清單2.用DbUnit進(jìn)行的數(shù)據(jù)庫(kù)-依賴性測(cè)試packagetest.come.acme,widget.Web;importj
6、ava.io.File;importjava.io.IOExccption;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;importorg.dbunit.database.DatabascConnection;importorg.dbunit.database.IDatabaseConnection;importorg.dbunit.dataset.DataSetException;importorg.dbunit.dataset.TDataSet;importorg.d
7、bunit.dataset,xml.FlatXmlDataSet;importorg.dbunit.operation.DatabaseOpcration;importnet.sourceforge,jwebunit.WebTester;importjunit.framework.TestCase;publicclassRcpcatablcWidgctCreationTcstextendsTestCase{p