了解測試的工作原理
讓我們搞點破壞,然后看看會發生什么事。夜深了,我們決定把 "Hello World" 變成一個靜態字符串。在更改期間,我們 不小心 打錯了字母,將 "o" 變成了 "0",如清單 6 所示。
清單 6. Hello world 類更改
package com.company; public class HelloWorld { private final static String HELLO_WORLD = "Hell0 World"; public String sayHello() { return HELLO_WORLD; } } |
在構建包時,我們看到了錯誤。清單 7 顯示了 runtest 中的錯誤。它顯示了失敗的測試類和測試方法,并說明了為什么會失敗。我們返回到代碼中,改正錯誤后離開。
清單 7. 構建錯誤示例
E:\projects\sample>ant runtests Searching for build.xml ... Buildfile: E:\projects\sample\build.xml JUNIT: compile: jar: compiletests: runtests: [junit] ..F [junit] Time: 0 [junit] [junit] FAILURES!!! [junit] Test Results: [junit] Run: 2 Failures: 1 Errors: 0 [junit] There was 1 failure: [junit] 1) testSayHello(test.com.company.HelloWorldTest) "expected:<Hello World> but was:<Hell0 World>" [junit] BUILD FAILED E:\projects\sample\build.xml:35: Java returned: -1 Total time: 0 seconds |
并非完全無痛
新的過程并不是完全無痛的。為使單元測試成為開發的一部分,您必須采取以下幾個步驟:
下載和安裝 JUnit。
下載和安裝 Ant。
為構建創建單獨的結構。
實現與主類分開的測試類。
學習 Ant 構建過程。
但好處遠遠超過了痛苦。通過使單元測試成為開發過程的一部分,您可以:
自動驗證以捕捉更改“臭蟲”
從接口角度設計類
提供干凈的示例
在發行包中避免代碼混亂和類膨脹。
實現 24x7
保證產品的質量要花費很多錢,但如果質量有缺陷,花費的錢就更多。如何才能使所花的錢獲得最大價值,來保證產品質量呢?
評審設計和代碼。 評審可以達到的效果是單純測試的一半。
通過單元測試來確認模塊可以使用。 盡管測試早就存在,但隨著開發實踐的不斷發展,單元測試逐漸成為日常開發過程的一個部分。
在我 10 年的開發生涯里,為 emageon.com 工作是最重要的部分之一。在 emageon.com 時,設計評審、代碼評審和單元測試是每天都要做的事。這種日常開發習慣造就了最高質量的產品。軟件在客戶地點第一年的當機次數為零,是一個真正的 24x7 產品。單元測試就象刷牙:您不一定要做,但如果做了,生活質量就更好。
參考資料
您可以參閱本文在 developerWorks 全球站點上的 英文原文 .
下載在本文中引用的 示例代碼 。
從 Apache 網站下載 Ant。如需 Ant 文檔、FAQ 和其他下載,請訪問 Jakarta 項目的Ant 主頁 。
JUnit 主頁 提供了額外的測試示例、文檔、文章和 FAQ。您可以從 www.xprogramming.com 下載 JUnit 3.2。
Kent Beck 所寫的 “簡單的 Smalltalk 測試”(Simple Smalltalk Testing) 討論了一個簡單的測試策略和支持它的框架。
請參閱其它開發者的有關單元測試的評論 (comments on unit testing) 。
要了解其它有用的開發習慣,請訪問 終極編程主頁 (Extreme Programming Home page) 。
關于作者 Malcolm G. Davis 擁有自己的咨詢公司,并任公司的總裁,該公司位于美國阿拉巴馬州的伯明翰 (Birmingham)。他把自己看做是個 Java 傳道者。在工作之余,他喜歡跑步,以及和他的孩子們一起玩耍。您可以通過 malcolm@nuearth.com 與 Malcolm 聯系。 |
文章來源于領測軟件測試網 http://www.kjueaiud.com/