回答
你爲什麼不嘗試了EasyMock或
的Mockito嘗試Mockito,你會愛上它!
您可以在此blog post中看到此庫,顯示了6個簡單的Mockito使用示例。
一個簡單的例子:
@Test
public void iteratorWillReturnHelloWorld(){
//arrange
Iterator i = mock(Iterator.class);
when(i.next()).thenReturn("Hello").thenReturn("World");
//act
String result = i.next() + " " + i.next();
//assert
assertEquals("Hello World", result);
}
關於您的要求
編輯:
似乎的Mockito運行相當好於Java 1.4和JUnit 3,如本blog post規定。
同樣的例子同上,但對Java 1.4:
public void testIteratorWillReturnHelloWorld(){
//arrange
Iterator i = Mockito.mock(Iterator.class);
Mockito.when(i.next()).thenReturn("Hello").thenReturn("World");
//act
String result = i.next() + " " + i.next();
//assert
assertEquals("Hello World", result);
}
有提供全系列的嘲諷庫爲Java:
- EasyMock,可以說是目前最流行的嘲弄庫。廣泛的功能,易於使用。
- Mockito,原本基於EasyMock的代碼,使用了類似的範例爲嘲諷,但自動執行多項任務,如切換模擬對象的狀態(即記錄,回放,驗證,重置)
- jMock,嘲諷基於Hamcrest匹配器。沒有親自使用過這個,但從我所瞭解的情況來看,這至少是體面的。
......並且很可能還有一些其他使用較少的庫,我甚至沒有聽說過。
由於您的要求是JDK 1.4.2支持,不幸的是您可以選擇舊版本的EasyMock或真正舊版本的jMock。即使Java5的支持將在兩天內結束(30 October 2009, that is!),所以如果可能的話,嘗試從1.4.2時代開始 - 你(和/或你的公司)遠遠落後於其他人,並且在任何嚴肅的技術之外支持。
是的,我的公司有點落後於技術的進步。我希望他們能夠升級我即將維護的這個應用程序。 – zfranciscus 2009-10-29 01:13:57
沒有人認識到這一點,但你爲什麼試圖嘲笑私人方法?這幾乎總是一個壞主意,因爲它破壞了封裝。
那麼現在我們正在維護一個寫得不好的應用程序。一些類有非常大的私有方法,需要嚴肅的重構。作爲這項工作的一部分,我們正在努力圍繞私有方法進行良好的單元測試,然後慢慢地重新構建這些方法 – zfranciscus 2009-11-18 22:05:03
我仍然認爲嘲笑私有方法不是一個好主意,還有其他技術。我假設你有Feathers關於使用遺留代碼的書? – 2009-11-19 13:21:15
- 1. 使用模擬對象在JavaScript中進行單元測試
- 2. Qt,單元測試和模擬對象
- 3. 模擬UdpClient進行單元測試
- 4. 注入沒有java接口的模擬對象進行單元測試
- 5. 容器內測試與模擬對象進行集成測試
- 6. Java測試與mockito:模擬類對象
- 7. 在C++中使用序列化模擬對象進行單元測試
- 8. 使用Mockito進行單元測試 - 使抽象模擬虛擬方法
- 9. 模擬單元測試
- 10. 單元測試:模擬BundleTable.Bundles
- 11. 單元測試模擬法
- 12. 單元測試和模擬
- 13. 單元測試模擬Url.Action
- 14. 單元測試模擬HttpActionContext
- 15. 模擬@ org.jboss.seam.annotations.in行爲單元測試
- 16. Mock返回模擬:模擬neo4j(數據庫)對象以進行域邏輯的單元測試
- 17. 單元測試的Visual C++覆蓋/模擬對象?
- 18. QTestLib單元測試框架+ Gmock(創建QTCPServer - 模擬對象)
- 19. 模擬UserDefaults對象在單元測試返回_ArrayBuffer
- 20. iOS單元測試私人模擬對象?
- 21. 單元測試時我應該使用模擬對象嗎?
- 22. 在ServiceStack中可以模擬單元測試的Request.OriginalRequest對象嗎?
- 23. 單元測試:解釋模擬的用處對象
- 24. 單元測試私有方法和使用模擬對象
- 25. 單元測試,模擬對象和ioc的最佳實踐
- 26. 使用模擬對象而不關聯單元測試
- 27. Web API單元測試的模擬請求對象
- 28. 如何在做單元測試時模擬內部對象?
- 29. 在模擬對象單元測試中遇到問題
- 30. initializeError單元測試在Xtend中使用Mockito模擬對象
這是我第一次見到Mockito的經歷......非常整潔。謝謝! – 2009-10-30 13:56:39