1

PowerMock を使用して、静的メソッドで最終クラスをモックしようとしていますが、コードが呼び出すたびMyClass.getInstance()に戻りますnull

私のテストでは、テストクラスに注釈を付けました

@RunWith(PowerMockRunner.class)
@PrepareForTest(MyClass.class) 

モックを作成する方法では、次のことを行います

suppressConstructor(MyClass.class);
PowerMock.mockStatic(MyClass.class);
mockClass = PowerMock.createMock(MyClass.class);
expect(MyClass.getInstance()).andReturn(mockClass);

クラスPowerMock.createMockを作成する必要がありますか?EasyMock

コード ( MyClass.getInstance()) でこれを呼び出すと、常に戻りますnullが、テスト クラスをステップ実行すると、変数mockClassがインスタンス化されます。

4

1 に答える 1

1

EasyMockのモック方法を使用しているようです。getInstance()メソッドを呼び出す前にMyClassを再生しましたか?

PowerMock.replay(MyClass.class);

PowerMock MockStaticのドキュメントから:

PowerMock.mockStatic(ClassThatContainsStaticMethod.class)を使用して、このクラスのすべてのメソッドをモックします。PowerMock.replay(ClassThatContainsStaticMethod.class)を使用して、クラスを再生モードに変更します。PowerMock.verify(ClassThatContainsStaticMethod.class)を使用して、検証モードにクラスを変更します。

于 2013-01-08T14:14:58.217 に答える