您的傳統(tǒng)代碼是不是要求使用匹配的類測試套件才能針對其源代碼庫運行?針對此類目的,jMock 堪稱是一個的測試框架。但是,并不是所有情況都能夠適用,尤其是必須以 jMock 不期望的方式構造對象時。為避免生成自定義模擬對象套件才能支持應用程序中的單元測試的麻煩,可以調整 RMock,與 jMock 無縫地結合使用,從而解決這一問題……
模擬對象將模仿出于指導代碼執(zhí)行的惟一目的而編寫的類的行為,以便它在測試時符合代碼執(zhí)行要求。終,模擬對象數目可以隨著應用程序類數目的增長而增長。使用 jMock、RMock 甚至 EasyMock 等框架有助于消除對物理的獨立存在的模擬對象集的需求。
EasyMock 框架的一個主要缺點是不能模擬具體類 —— 而只能模擬接口。在本文中,我將向您展示怎樣使用 jMock 框架來模擬具體類和 接口,以及如何用 RMock 測試某些模糊的情況。
在 Eclipse IDE 中配置 jMock 和 RMock
首先啟動 Eclipse 集成開發(fā)環(huán)境 (IDE)。接下來,創(chuàng)建一個基本 Java™ 項目,稍后將把 JUnit、jMock 和 RMock Java Archive (JAR) 庫導入到該項目中。將 Java 項目命名為 TestingExample。在 Java Perspective 內,選擇 Project > Properties,然后單擊 Libraries 選項卡,如下所示:
圖 1. 在 Eclipse 中編輯 TestingExample 項目的屬性
當 JAR 文件位于 Java 類路徑(即,已在 Eclipse 內配置的 Java 運行時環(huán)境(Java Runtime Environment,JRE))中時,請使用 Add JARs 按鈕。Add Variable 按鈕適用于文件系統(tǒng)(本地或遠程)中的資源(包括 JAR)所駐留的具體目錄,并且通?梢砸么税粹o。在必須引用 Eclipse 中默認的那些特定資源或為特定的 Eclipse 工作區(qū)環(huán)境配置的那些特定資源時,請使用 Add Library 按鈕。單擊 Add Class Folder,從已經配置為項目一部分的一個現(xiàn)有項目文件夾中添加資源。
對于本示例,請單擊 Add External JARs 并瀏覽到已下載的 jMock 和 RMock JAR。將其添加到項目中。當顯示圖 2 中所示的屬性窗口時,請單擊 OK。
圖 2. 已添加到 TestingExample 項目中的 jMock 和 RMock JAR
TestExample 源代碼
對于 TestExample 項目,您將使用來自四個類的源代碼:
ServiceClass.java
Collaborator.java
ICollaborator.java
ServiceClassTest.java
待測試的類將是 ServiceClass,該類包含了一個方法:runService()。服務方法將獲取實現(xiàn)簡單接口 ICollaborator 的 Collaborator 對象。具體的 Collaborator 類中實現(xiàn)了一個方法:executeJob()。Collaborator 是必須正確模擬的類。