您一定編寫過大量單元測試。作為一名開發人員,您每天都要運行很多次測試,尤其在持續集成環境中更是如此。但是如果因為修改源代碼而打斷了這些單元測試,會帶來什么影響呢?當 Jester 與 Maven 結合在一起構造 Grester 后,您很快就會找到解決方案。
Jester 由 Ivan Moore 編寫,它是測試由程序員和開發人員編寫的單元測試的優秀工具。該工具基于這樣一個假設:代碼中的很多區域包含了條件語句、循環語句和 case 語句,并且在一些代碼區域中,類的圈復雜度(cyclomatic complexity)由于存在很多執行路徑而會突然增加。Jester 主要關注的就是類似這樣的代碼。但是要運行它,必須使用指向各個資源的格式良好的類路徑。
Grester 是針對 Jester 的 Apache Maven 包裝器,它減輕了從項目依賴關系構造 Java™ 類路徑之類的麻煩,這樣您可以使用 Jester 更輕松地測試執行點。Grester 還增強了使用 Maven 的一些優點,Maven 是其基礎架構的核心。在對沒有使用測試驅動方式編寫的代碼進行額外檢查時,Jester 尤為有用。此類代碼可以是舊式應用程序中的遺留代碼,甚至還可以是最近編寫的代碼,這些代碼的開發人員認為使用 Agile 的測試驅動方法指導構建高質量代碼來說難度較大。
實際上,您可以使用 Grester 來突破使用非測試驅動方式編寫代碼的限制。根據我的經驗,范圍蔓延(scope creep)和可能錯失或繞過實際業務函數的代碼將會增加錯誤數和惡意代碼 數量(快速處理 blob 反模式,即使在很小的代碼段中,都不必作為單個難于管理的模塊或模塊集)。
本文不會探討解釋 Jester 的輸出及精確說明 Jester 如何工作的技術細節。要獲得這些信息,請參閱 參考資料 中由 Elliott Rusty Harold 撰寫的優秀文章,或者訪問 Ivan Moore 的 Web 站點。本文旨在探討獲取并圍繞 Jester 使用 Maven 插件包裝器。
獲取 Grester
您可以通過兩個來源之一獲取 Grester,它們都列在 參考資料 中。運行 Grester 所需的基礎設施非常少:您只需要使用 Maven 就能構建和使用 Grester。Grester 是用 Groovy 編寫的,Groovy 是一種動態語言,它的語法類似于 Java 并且擁有 Python 和 Ruby 等語言的優點。Grester 本質上只是用于快速運行 Jester 工具的另一個 Maven 插件,因此 Grester 的真正威力來自 Jester。在本文中,結合使用了 Jester V1.37 與 Grester V0.3 alpha 發行版。
Jester 打破常規:為什么呢?
如果所有項目 Java Archive (JAR) 依賴關系都位于一個位置,那么直接運行 Jester 不可能比在 Java 類路徑條目中引用單個路徑更簡單。但是,當依賴關系散布到整個文件系統中時,每次 Jester 運行的配置問題會十分復雜而討厭,尤其是在各個依賴關系隨時間改變位置時。使用 Maven 將顯著簡化此過程。
Jester 運行在 Maven 項目構建配置以外的每個實例中。那么,Grester 的特別之處在哪里?答案在于 Maven 組織其依賴關系的方式。這種 “安排” 非常高效,Maven 不但嘗試把 Java(或 Groovy)JAR 和 Web 歸檔 (WAR) 的查找方式標準化,而且還嘗試把保存方式標準化。
如果您不熟悉 Maven,請使用系統庫 的概念。有一個位于 $USER_HOME\.m2\repository 的默認本地系統庫,還有一個在位于 $MAVEN_HOME/conf 的 pom.xml 或 settings.xml 文件中配置的遠程系統庫。
安裝 Grester
獲取 TAR 壓縮資源(.tar 文件和 tar.gz 文件適用于 UNIX® 和 Linux®)或者 Microsoft® Windows® ZIP 文件后,請將其解壓縮。有很多種方法可以完成此操作:在這里,我使用 Windows 中的 Cygwin 實用程序。
文章來源于領測軟件測試網 http://www.kjueaiud.com/