Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JUnit mocks,我应该使用哪个工具?_Java_Junit_Mocking_Mockito_Jmock - Fatal编程技术网

Java JUnit mocks,我应该使用哪个工具?

Java JUnit mocks,我应该使用哪个工具?,java,junit,mocking,mockito,jmock,Java,Junit,Mocking,Mockito,Jmock,我来自PHP测试界,现在开始用Java进行测试 我在JUnit中见过几种模拟SUT的工具,如Mockito、SevenMock、ClassMock等 我真的很感激任何建议,我应该使用哪一个 提前谢谢 Mockito似乎是最常用的 编辑: 我经常使用Mockito。我没用过EasyMock,所以不能说太多 使用Mockito很简单,但是您想要测试的类也应该处于解耦状态,这将使测试更容易。使用mockito,您将用mocks对象实例化一个特定的类 假设您有一个想要测试的类,但是想要模拟它的一个依

我来自PHP测试界,现在开始用Java进行测试

我在JUnit中见过几种模拟SUT的工具,如Mockito、SevenMock、ClassMock等

我真的很感激任何建议,我应该使用哪一个


提前谢谢

Mockito似乎是最常用的

编辑:


我经常使用Mockito。我没用过EasyMock,所以不能说太多

使用Mockito很简单,但是您想要测试的类也应该处于解耦状态,这将使测试更容易。使用mockito,您将用mocks对象实例化一个特定的类

假设您有一个想要测试的类,但是想要模拟它的一个依赖项

final DepedencyToMockClass mockObject = mock(DepedencyToMockClass.class);
when(mockObject.getTestMethod()).thenReturn("Test");
现在,当初始化您想要的类时,可以注入这个mockObject

final ClassToTest test = new ClassToTest(mockObject);
Mockito使用反射来创建这些模拟对象。但是,如果您有一个依赖项,并且它被声明为final,那么模拟将失败

Mockito中另一个有用的方法是verify,您可以在其中验证mock对象中的某些操作。偷看一下莫基托。但是,模拟对象有一些限制,在某些情况下,很难创建模拟对象,可能是外部/第三方代码。我认为在为测试目的注入真实对象时尝试实例化它们是一种很好的做法,如果失败,Mockito会有所帮助。

我已经使用了一段时间。我个人喜欢生成的代码易于阅读,并且您可以轻松区分津贴和期望:

context.checking(new Expectations() {{
        // allowances
        ignoring(parserState);
        allowing(factory).create(); will(returnValue(object));

        // expectations
        one(service).addSth(with(any(Integer.class)), with(sth));
    }});
其他强大功能包括:

  • 序列:按顺序调用
  • 参数匹配器:hamcrest库
  • 状态:条件为true时的约束调用