JUnit 使用范例.DOCVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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

文档评论(0)

2105194781 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档