0

シナリオは次のとおりです。

public class classA implements classRandom {
   public void methodA(arg1, arg2) {
       POJOb objB;
       objB = SingletonClass_Instance().singletonMethodA(arg1);
   }
   public SingletonClass SingletonClass_Instance() {
       return SingletonClass.getInstance();
   }
}

public class SingletonClass {
    public objB singletonMethodA(final String arg1) {
        return randomObj;
    }
}

クラス A の methodA の単体テストを作成しています。このために、次のスタブ コードを作成しました。

SingletonClass mockSingletonClass = PowerMockito.mock(SingletonClass.class);
POJOb = PowerMockito.mock(POJOb.class);
Mockito.when(mockSingletonClass.singletonMethodA(Mockito.anyString())).thenReturn(POJOb);

このコードの直後に、コードがあります:

POJOb objB = classA_Object.methodA(arg1, arg2);

このコードは、次のようになるとすぐに失敗します。

**methodA -->  SingletonClass_Instance().singletonMethodA**

私はすでに次の Powermockito 手順を使用しています。

1) import PM libs
2) Added @PrepareForTest({SingletonClass.class, POJOb.class})

それでも、SingletonClass の Public/Void メソッドをモックできません。それらは常にnullになります。

4

1 に答える 1

2

このようなことをする必要があります。

PowerMockito.mockStatic(SingletonClass.class);
SingletonClass mockSingleton = PowerMockito.mock(SingletonClass.class);
PowerMockito.when(SingletonClass.getInstance()).thenReturn(mockSingleton);
于 2015-10-26T19:51:57.100 に答える