0

問題は次のとおりです。プライベート クラスのメソッドmethodTest()をテストする必要があります。methodTest ()は、外部ライブラリから静的メソッドstaticExternal( )を呼び出します。JMock と EasyMock を使用し、 staticExternal()を含むクラスにインターフェイスがない場合、mockLocal( ) のstaticExternal()を置き換える方法は?

PS PowerMock は使用できません。

4

1 に答える 1

3

私の知る限り、あなたはできません。基本的に、そのコードをテストするのは難しいです。依存関係の抽出を検討する必要があります。この場合、その依存関係の「通常の」実装は静的メソッドを呼び出します。

基本的に、静的メソッド呼び出しは静的であるため、正確に置き換えるのは困難です。PowerMockのようなツールは、静的メソッド呼び出しをインターセプトするために、Javaの本質(クラスローダーの置き換えなど)に精通する必要があります。私の意見では、通常、コードをリファクタリングして、そのようなことをせずにテストできるようにすることをお勧めします。

于 2013-03-06T14:13:08.030 に答える