使用 Grester 简化 Java 应用程序的 JUnit 测试
2010-01-11 00:00:00 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁诡垎鍐f寖闂佺娅曢幑鍥灳閺冨牆绀冩い蹇庣娴滈箖鏌ㄥ┑鍡欏嚬缂併劎绮妵鍕箳鐎n亞浠鹃梺闈涙搐鐎氫即鐛崶顒夋晬婵絾瀵ч幑鍥蓟閻斿摜鐟归柛顭戝枛椤牆顪冮妶搴′簼缂侇喗鎸搁悾鐑藉础閻愬秵妫冮崺鈧い鎺戝瀹撲礁鈹戦悩鎻掝伀缁惧彞绮欓弻娑氫沪閹规劕顥濋梺閫炲苯澧伴柟铏崌閿濈偛鈹戠€n€晠鏌嶆潪鎷屽厡闁汇倕鎳愮槐鎾存媴閸撴彃鍓卞銈嗗灦閻熲晛鐣烽妷褉鍋撻敐搴℃灍闁绘挻娲橀妵鍕箛闂堟稐绨肩紓浣藉煐濮樸劎妲愰幘璇茬闁冲搫鍊婚ˇ鏉库攽椤旂》宸ユい顓炲槻閻g兘骞掗幋鏃€鐎婚梺瑙勬儗閸樺€熲叺婵犵數濮烽弫鍛婃叏椤撱垹纾婚柟鍓х帛閳锋垶銇勯幒鍡椾壕缂備礁顦遍弫濠氱嵁閸℃稒鍊烽柛婵嗗椤旀劕鈹戦悜鍥╃У闁告挻鐟︽穱濠囨嚃閳哄啰锛滈梺褰掑亰閸欏骸鈻撳⿰鍫熺厸閻忕偟纭堕崑鎾诲箛娴e憡鍊梺纭呭亹鐞涖儵鍩€椤掑啫鐨洪柡浣圭墪閳规垿鎮欓弶鎴犱桓闂佸湱枪閹芥粎鍒掗弮鍫熷仺缂佸顕抽敃鍌涚厱闁哄洢鍔岄悘鐘绘煕閹般劌浜惧┑锛勫亼閸婃牠宕濋敃鈧…鍧楀焵椤掍胶绠剧€光偓婵犱線鍋楀┑顔硷龚濞咃絿妲愰幒鎳崇喓鎷犻懠鑸垫毐闂傚倷鑳舵灙婵炲鍏樺顐ゆ嫚瀹割喖娈ㄦ繝鐢靛У绾板秹寮查幓鎺濈唵閻犺櫣灏ㄥ銉р偓瑙勬尭濡繂顫忛搹鍦<婵☆垰鎼~宥囩磽娴i鍔嶉柟绋垮暱閻g兘骞嬮敃鈧粻濠氭偣閸パ冪骇鐎规挸绉撮—鍐Χ閸℃ê闉嶇紓浣割儐閸ㄥ墎绮嬪澶嬪€锋い鎺嶇瀵灝鈹戦埥鍡楃仯闁告鍕洸濡わ絽鍟崐鍨叏濡厧浜鹃悗姘炬嫹

Jester 由 Ivan Moore 编写,它是测试由程序员和开发人员编写的单元测试的优秀工具。该工具基于这样一个假设:代码中的很多区域包含了条件语句、循环语句和 case 语句,并且在一些代码区域中,类的圈复杂度(cyclomatic complexity)由于存在很多执行路径而会突然增加。Jester 主要关注的就是类似这样的代码。但是要运行它,必须使用指向各个资源的格式良好的类路径。
Grester 是针对 Jester 的 Apache Maven 包装器,它减轻了从项目依赖关系构造 Java™ 类路径之类的麻烦,这样您可以使用 Jester 更轻松地测试执行点。Grester 还增强了使用 Maven 的一些优点,Maven 是其基础架构的核心。在对没有使用测试驱动方式编写的代码进行额外检查时,Jester 尤为有用。此类代码可以是旧式应用程序中的遗留代码,甚至还可以是最近编写的代码,这些代码的开发人员认为使用 Agile 的测试驱动方法指导构建高质量代码来说难度较大。
实际上,您可以使用 Grester 来突破使用非测试驱动方式编写代码的限制。根据我的经验,范围蔓延(scope creep)和可能错失或绕过实际业务函数的代码将会增加错误数和恶意代码 数量(快速处理 blob 反模式,即使在很小的代码段中,都不必作为单个难于管理的模块或模块集)。
本文不会探讨解释 Jester 的输出及精确说明 Jester 如何工作的技术细节。本文旨在探讨获取并围绕 Jester 使用 Maven 插件包装器。
获取 Grester
运行 Grester 所需的基础设施非常少:您只需要使用 Maven 就能构建和使用 Grester。Grester 是用 Groovy 编写的,Groovy 是一种动态语言,它的语法类似于 Java 并且拥有 Python 和 Ruby 等语言的优点。Grester 本质上只是用于快速运行 Jester 工具的另一个 Maven 插件,因此 Grester 的真正威力来自 Jester。在本文中,结合使用了 Jester V1.37 与 Grester V0.3 alpha 发行版。
更多精彩
赞助商链接