JUnit模拟,我应该使用哪个工具?

我来自PHP测试世界,我开始用Java进行测试。 我在JUnit中看到了几个模拟SUT的工具,比如Mockito,SevenMock,ClassMock等。 我真的很感激我应该使用哪一个建议。 提前致谢!     
已邀请:
我已经使用了很多Mockito。 http://mockito.org/我没有使用过EasyMock,所以不能多说。 使用Mockito很简单,但是您打算测试的类也应该处于解耦状态,这样可以更容易测试。使用mockito,您将使用mocks对象实例化一个特定的类。 假设您有一个要测试的类,但想要模拟其中一个依赖项
final DepedencyToMockClass mockObject = mock(DepedencyToMockClass.class);
when(mockObject.getTestMethod()).thenReturn("Test");
现在,在初始化您想要的类时,现在可以注入这个mockObject。
final ClassToTest test = new ClassToTest(mockObject);
Mockito使用反射来创建这些模拟对象。但是,如果您有一个依赖项,并且如果它被声明为final,那么mocking将失败。 Mockito中另一个有用的方法是验证在哪里可以验证模拟对象中的某些操作。在mockito偷看。但是在模拟对象中存在限制,在某些情况下,很难创建模拟对象,可能是外部/第三方代码。我认为在将它们注入测试目的时尝试实例化实际对象是一种很好的做法,Mockito帮助失败了。     
Mockito似乎最常用 编辑: Mockito和JMockit之间的比较 - 为什么Mockito比JMockit更好? EasyMock vs Mockito:设计与可维护性? http://www.dahliabock.com/blog/2009/08/21/mocking-mockito-vs-easymock-example/     
我一直在使用JMock。我个人认为生成的代码易于阅读,您可以轻松区分配额和期望:
context.checking(new Expectations() {{
        // allowances
        ignoring(parserState);
        allowing(factory).create(); will(returnValue(object));

        // expectations
        one(service).addSth(with(any(Integer.class)), with(sth));
    }});
其他强大的功能是: 序列:按顺序调用。 参数匹配器:hamcrest库 States:条件为true时的约束调用。     

要回复问题请先登录注册