運行新測試用例。這一次,您將看到成功的結果。圖 7 將顯示令人愉快的結果。
圖 7. RMock 與 jMock 協(xié)作使場景 4 測試成功
Collaborator 模擬對象已被正確設置,并且 mockClassB 對象將按預期執(zhí)行。
回頁首
快速查看測試工具差別
正如您已經(jīng)在場景中看到的,jMock 和 RMock 都是用于測試 Java 代碼的強大工具。但是,用于開發(fā)和測試的任何其他工具總是有限制。實際上,其他測試工具都是可用的,但是這些測試工具的運行情況都不如 RMock 和 jMock(在 Java 技術中)。個人經(jīng)驗告訴我 Microsoft® .NET 框架也附帶了一些功能強大的工具(例如 TypeMock),但是那超出了本文(實際上還有平臺)的范圍。
表 1 顯示了兩個框架之間的一些不同之處以及隨著時間的推移遇到的可能問題,尤其是在 Eclipse 環(huán)境中。
表 1. RMock 與 jMock 測試框架之間的不同之處
測試模擬樣式 | jMock | RMock |
---|---|---|
可以模擬接口 |
是:新的 Mock() 方法 |
是:mock() 方法 |
可以模擬具體類 |
是:帶有 CGLIB 的 mock() 方法 |
是:mock() 或 intercept() 方法 |
可以模擬任何具體類 | 否:無參數(shù)構造函數(shù)必須存在 | 是 |
可以隨時獲得代理 | 是 |
否:僅當 startVerification() 處于緒狀態(tài)后 |
使用其他 Eclipse 插件的問題 | 無已知問題 | 是:與 Eclipse 的 CoverClipse 插件存在內存沖突 |
結束語
我鼓勵您使用這些框架,利用它們的力量來生成單元測試的結果。許多 Java 開發(fā)人員不習慣于頻繁編寫測試。而且如果需要編寫測試,通常都是十分簡單、覆蓋方法的主要功能目標的測試。要測試代碼的某些 “難以達到的” 部分,jMock 和 RMock 都是的選擇。
使用 jMock 和 RMock 將極大地減少代碼中的 bug,提高使用經(jīng)過證明的方法測試編程邏輯的技巧。此外,閱讀文檔并用這些框架和其他框架的改進版本進行測試(并減少構造不好的代碼)將對提高開發(fā)人員技巧有著額外的幫助。