- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
JUnit 使用范例
JUnit 屬於SWEBOK中三大測試層級的unit testing類別。 單位測試的測試對象主要是程式中的模組。 JUnit是個針對Java程式語言所設計的單位測試工具。 下圖中的netbeans,一個由Sun公司所提供的免費整合開發平台中,就有包含JUnit
的工具。 以下我將用個簡單的範例介紹此工具如何使用。 為了解釋JUnit的功能我將撰寫一個非常簡單的「 輸出最大數」的程式。 此程式會讀入一個int的陣列並將其中最大的數值傳回。 為了顯示JUnit的功效此程式將刻意包含些錯誤。 而在一步步的檢查下,我將示範JUnit如何能將這一個個的錯誤找出來。
圖一:剛開始進入netbeans IDE的畫面
步驟一: 首先從選單File-New選項產生一個新的Project。 如圖二所示。
圖二:新增一個新的Project
步驟二: 此時在剛剛產生的project的source package中,我將再產生一個測試用的類別。 產生的方法可以在source package欄位上按右鍵並選擇new的選項。
程式碼如下:
public class FindMax {
/** Creates a new instance of FindMax */
public FindMax() {
}
public static int largest(int[] list){
int index, max=Integer.MAX_VALUE;
for (index = 0; index list.length-1; index++){
if (list[index] max) {
max = list[index];
}
}
return max;
}
}
圖三:產生新的測試範例類別
步驟三: 在撰寫一個簡單地尋找最大值的副程式後我將為它產生一個JUnit的測試程式。 產生此測試程式的方法如同產生class檔一般;在點選class檔後按右鍵並選擇Tools- JUnit tests - Create Test即可。 此時一個JUnit 的測試程式將在project的test package底下產生。
圖四:產生一個JUnit測試程式
步驟四:在加入一個簡單的assertEquals( 9, FindMax.largest(new int[] {7,8,9}));測試條件並執行此測試後我們會發現IDE下方的結果欄會顯示有測試失敗了。
AssertEquals()是JUnit提供眾多測試的指令之一。 它個功效是測試參數的兩者有無相等。 在此測試中第一個參數是一個整數9,而第二個參數則是我們之前寫的程式由一個int陣列{7,8,9}輸入為參數的結果。 正常而言兩個應該要是相等的。 因為此陣列中最大的值應當要是9。 但是錯誤訊息卻顯示最大的值為 2147483647?!
圖五:assertEquals( 9, FindMax.largest(new int[] {7,8,9})); 結果
圖六:變數max改為零
步驟五: 2147483647是Int的最大值。 原來程式中max變數設錯。 原本最初的構想是要將max初始成一個最小的值,那之後陣列的第一個值一定會比他大。在將max = Integer.MAX_VALUE改成 max =0 我們在執行測試程式一次。
圖七:第二次執行測試程式結果
步驟六: 此時我們發現依然我們的推測 assertEquals( 9, FindMax.largest(new int[] {7,8,9}));是錯誤的。 結果顯示著「expected:9 but was:8」。 為何會這樣呢?!
在一番思考後我們會發現,原來程式碼的for迴圈的停止條件設錯了,導致最後依個陣列的數值不會被考慮到。 改正過後測試程式終於通過了。
圖八:改正過後的程式
圖九:第三次測試結果
步驟七: 此時我們再加入幾個測試; 第一個是測試陣列的順序會不會影響到結果,第二個是測試重複的值會不會出問題,而第三個是測試陣列只有一個值。
圖十: 新增的三個測試
圖十一:第四次測試結果
步驟八: 再度加入一個陣列中存在負值的測試
圖十二:新增負值測試
步驟九:此時我們卻發現新加入的測試失敗了。 錯誤訊息顯示「Testcase: testNegative(FindMaxTest): FAILED」「extected:-7 but was:0」。
圖十三:第五次測試結果
圖十四:改正max變數
步驟十: 原來問題出在第一次錯誤時將max = Integer.M
您可能关注的文档
- GE 3000 在线辐射煤灰分测量仪 - ENELEX.PDF
- GoPro Assembly GoPro与车体组装说明 - Thunder Tiger.PDF
- GP 系列– 波纹管压力开关 - Georgin.PDF
- GP-005 危害环境物质管理规范标准明细第16版 - TECX-UNIONS.PDF
- GMSK调制在USRP上的实现.PDF
- Febit 新型微流体miRNA 表达谱芯片 - 生物通.PDF
- GM-APD 阵列高精度像素读出电路设计 - 红外与激光工程.PDF
- GPS载波相位时间频率传递的研究 - 计量学报.PDF
- GSD12系列 - 光伏控制器.DOC
- Google Earth在地震应急中的应用 - 中国地震信息网.PDF
文档评论(0)