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

vic*_*rgp 4 java junit mocking jmock mockito

我来自PHP测试世界,我开始用Java进行测试.

我在JUnit中看到了几个模拟SUT的工具,比如Mockito,SevenMock,ClassMock等.

我真的很感激我应该使用哪一个建议.

提前致谢!

Mal*_*lsR 8

我已经使用了很多Mockito.http://mockito.org/我没有使用过EasyMock,所以不能多说.

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

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

final DepedencyToMockClass mockObject = mock(DepedencyToMockClass.class);
when(mockObject.getTestMethod()).thenReturn("Test");
Run Code Online (Sandbox Code Playgroud)

现在,在初始化您的目标类时,现在可以注入此mockObject.

final ClassToTest test = new ClassToTest(mockObject);
Run Code Online (Sandbox Code Playgroud)

Mockito使用反射来创建这些模拟对象.但是,如果您有一个依赖项,并且如果它被声明为final,那么mocking将失败.

Mockito中另一个有用的方法是验证在哪里可以验证模拟对象中的某些操作.在mockito偷看.但是在模拟对象中存在限制,在某些情况下,很难创建模拟对象,可能是外部/第三方代码.我认为在将它们注入测试目的时尝试实例化实际对象是一种很好的做法,Mockito帮助失败了.