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);
}
私は嘲笑に興味がある方法の結果を模擬します。
これは可能ですか?
のいずれかを忘れないでください:あなたが定義されている唯一の方法をスタブと変わらず、他のを残してスタブを使用することができます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()は非推奨のスタブ(オブジェクト)**の後継ですので、私はそのメソッドがもう使用されることを意図しているとは思わないし、私が必要とするものを何もしないでください。 –
EasyMock用のmockStaticPartialが定義されています.Mockitoを明示的に求めているとは思いませんでした - http://powermock.googlecode.com/svn/docs/powermock-1.5/apidocs/org/powermock/api/easymock/PowerMock html – zibi
スタブは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