“jMock利用mock objects思想來對Java code進行測試。jMock具有以下特點:容易擴展,讓你快速簡單地定義mock objects,因此不必打破程序間的關聯,你定義靈活的超越對象之間交互作用而帶來測試局限,減少你測試地脆弱性。”
??? 跟JMock功能類似的還有EasyMock。
??? 簡單試驗后的感覺沒有試驗DBUnit后的感覺強烈,試了DBUnit的感覺是這東西以后一定要用.
??? 但個人認為mock object這種東西能不用就不用,模擬來模擬去,最后還是要和真東西聯調,所以mock的階段應該是盡可能的短才是.
使用模仿對象進行測試的常用編碼樣式是:
· 創建模仿對象的實例
· 設置模仿對象中的狀態和期望值
· 將模仿對象作為參數來調用域代碼
· 驗證模仿對象中的一致性
代碼中的大概過程:
???? Mock mock = new Mock(**.class);//構造一個那個類的mock對象,把這個類傳入Mock
???? 使用mock.expects方法,來設置想要執行的操作:執行幾次、執行哪個方法、傳什么參、返回什么值
?????獲得那個mock對象:** x = (**)mock.proxy();//proxy方法返回代理類實例,即虛擬對象實例
???? 然后run **.class的那個方法(call methods on the mock object, expectation on it will deliver the result set up by yourself)
???? 寫mock-object 測試,需要有獨立的接口作為mock的對象(從而促進了針對接口編程的習慣),還有個好的副作用:他迫使你來重寫一些代碼。實際上,代碼常常寫的不好。你讓類和環境之間產生了不必要的耦合。