我想为使用/依赖于另一个类的服务编写单元测试。我想做的是模拟依赖类的行为(与该类的实例相对)。被测试的服务方法在内部使用了依赖类(即,没有将依赖类的实例传递给方法调用),例如,我有一个要测试的服务方法:

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();
   }

希望能帮助到你

09-09 23:35