回答
你为什么不尝试了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