我想为使用/依赖于另一个类的服务编写单元测试。我想做的是模拟依赖类的行为(与该类的实例相对)。被测试的服务方法在内部使用了依赖类(即,没有将依赖类的实例传递给方法调用),例如,我有一个要测试的服务方法:
import DependentClass;
public class Service {
public void method() {
DependentClass object = new DependentClass();
object.someMethod();
}
}
在我对Service method()的单元测试中,我想在DependentClass实例上模拟someMethod(),而不是让它使用真实的实例。我该如何在单元测试中进行设置?
我看过的所有示例和教程都显示了模拟对象实例,这些实例实例已传递到要测试的方法中,但是我还没有看到任何东西显示出如何模拟类而非对象实例。
Mockito是否有可能(肯定是)?
最佳答案
使用Powermockito
框架和whenNew(...)
方法很容易。测试示例如下:
@Test
public void testMethod() throws Exception {
DependentClass dependentClass = PowerMockito.mock(DependentClass.class);
PowerMockito.whenNew(DependentClass.class).withNoArguments().thenReturn(dependentClass);
Service service = new Service();
service.method();
}
希望能帮助到你