用Java创建模拟对象的最佳框架是什么?为什么?每个框架的优点和缺点是什么?


当前回答

对于一些不同的东西,您可以使用JtestR中组合的JRuby和Mocha,以表达性和简洁的Ruby为您的Java代码编写测试。这里有一些有用的JtestR模拟示例。这种方法的一个优点是模拟具体类非常简单。

其他回答

对于一些不同的东西,您可以使用JtestR中组合的JRuby和Mocha,以表达性和简洁的Ruby为您的Java代码编写测试。这里有一些有用的JtestR模拟示例。这种方法的一个优点是模拟具体类非常简单。

我开始通过JMock使用mock,但最终过渡到使用EasyMock。EasyMock就是这样——更简单——并提供了一种感觉更自然的语法。从那以后我就没换过。

我很早就使用了JMock。我在我的最后一个项目中尝试了Mockito,并喜欢它。更简洁,更干净。PowerMock涵盖了Mockito中没有的所有需求,比如模拟静态代码、模拟实例创建、模拟最终类和方法。这样我就有了完成工作所需的一切。

Mockito还提供了存根方法、匹配参数(如anyInt()和anyString())、验证调用次数(times(3)、atLeastOnce()、never())等选项。

我还发现Mockito简单干净。

我不喜欢Mockito的一点是你不能存根静态方法。

您还可以看看如何使用Groovy进行测试。在Groovy中,你可以使用'as'操作符轻松模拟Java接口:

def request = [isUserInRole: { roleName -> roleName == "testRole"}] as HttpServletRequest 

除了这些基本功能之外,Groovy在模拟方面还提供了更多的功能,包括强大的MockFor和StubFor类。

http://docs.codehaus.org/display/GROOVY/Groovy+Mocks