2013-02-01 17 views
27

私はクラスの静的メソッドを嘲笑して設定しています。私はこれを@BeforeのJUnitのセットアップ方法で述べる必要があります。PowerMock、静的メソッドをモックし、他のすべての静的メソッドで実際のメソッドを呼び出す

私の目標は、実際のメソッドを呼び出すようにクラスを設定することです。具体的には、を除いてを明示します。

基本的には:

@Before 
public void setupStaticUtil() { 
    PowerMockito.mockStatic(StaticUtilClass.class); 

    when(StaticUtilClass.someStaticMethod(antString())).thenReturn(5); // mock out certain methods... 

    // Now have all OTHER methods call the real implmentation??? How do I do this? 
} 

私はに実行している問題はnull値に付属している場合StaticUtilClass内方法はpublic static int someStaticMethod(String s)残念ながらRuntimeExceptionを投げるということです。

以下のように、私は単にデフォルトの回答として、実際のメソッドを呼び出すことの明白なルートを行くことができない:私は後に他のすべての静的メソッドで実際のメソッドを呼び出すために、デフォルトの回答を設定する必要が

@Before 
public void setupStaticUtil() { 
    PowerMockito.mockStatic(StaticUtilClass.class, CALLS_REAL_METHODS); // Default to calling real static methods 

    // The below call to someStaticMethod() will throw a RuntimeException, as the arg is null! 
    // Even though I don't actually want to call the method, I just want to setup a mock result 
    when(StaticUtilClass.someStaticMethod(antString())).thenReturn(5); 
} 

私は嘲笑に興味がある方法の結果を模擬します。

これは可能ですか?

答えて

50

部分嘲笑とは何を探していますか?

PowerMockではmockStaticPartialメソッドを使用できます。また

PowerMockito.stub(PowerMockito.method(StaticUtilClass.class, "someStaticMethod")).toReturn(5); 

@PrepareForTest(StaticUtilClass.class) 
私は表示されません
+0

のいずれかを忘れないでください:あなたが定義されている唯一の方法をスタブと変わらず、他のを残してスタブを使用することができますPowerMockitoで

私のPowerMockitoクラスのスタブ()またはmockStaticPartial()メソッド。バージョン1.5。私のバージョン1.9.5のMockitoクラスでは、ここにstub()メソッドがあります:http://docs.mockito.googlecode.com/hg/org/mockito/Mockito.html#stub(T)しかし、私が見つけたドキュメントを読むこれはhttp://docs.mockito.googlecode.com/hg/org/mockito/Mockito.html#when(T)です。** when()は非推奨のスタブ(オブジェクト)**の後継ですので、私はそのメソッドがもう使用されることを意図しているとは思わないし、私が必要とするものを何もしないでください。 –

+0

EasyMock用のmockStaticPartialが定義されています.Mockitoを明示的に求めているとは思いませんでした - http://powermock.googlecode.com/svn/docs/powermock-1.5/apidocs/org/powermock/api/easymock/PowerMock html – zibi

+1

スタブはPowerMockitoのスーパークラスであるMemberModifierで定義されています - そこにあります! - http://powermock.googlecode.com/svn/docs/powermock-1.5/apidocs/org/powermock/api/support/membermodification/MemberModifier.html#stub%28java.lang.reflect.Method%29 – zibi

関連する問題