2012-04-26 66 views
76

PowerMockを使用してクラスから静的メソッドをモックする方法を知っています。
しかし、私はJUnitとPowerMockを使って、テストクラス内の複数のクラスから静的メソッドをモックしたいと思います。PowerMockを使用して複数のクラスの静的メソッドをモック

誰でも私にこれを行うことができ、それを行う方法は教えてもらえますか?

+1

単一のクラスからメソッドをモックするのと同じ方法で行います。あなたはどこにいるのですか? – artbristol

+0

powermockを使用する場合は、このアノテーションをテストクラス@PrepareForTest(ClassThatContainsStaticMethod.class)に追加する必要があります。しかし、複数の注釈を指定することはできません。だからそれを行う方法? – Newbie

答えて

182

複数のクラスに対しては@PrepareForTest({Class1.class,Class2.class})を実行してください。 powermock/JUnitを用いたJavaで

+7

中かっこ!それは私が欠けていたものです。 – sudocoder

+2

クラスレベルの@RunWith(PowerMockRunner.class)でPowerMockRunnerに切り替えることも忘れないでください。 –

+0

@NikitaBarishokは必ずしも必要ではありません。上記の作業を行う代わりにルールを定義することができます。@ public PowerMockRule rule = new PowerMockRule(); –

8
@Test 
@PrepareForTest({Class1.class, Class2.class}) 
public final void handleScript() throws Exception { 
    PowerMockito.mockStatic(Class1.class); 
    PowerMockito.mockStatic(Class2.class); 

等...

+0

'PowerMock 1.6.5'に関しては、メソッドレベルで' @ PrepareForTest'を使用する際に問題があります(クラスレベルでのみ動作します) –

2

あなたは配列({})として必要な数の静的クラスと@PrepareForTest({})を使用しています。

@RunWith(PowerMockRunner.class) 
@PrepareForTest({XmlConverterA.class, XmlConverterB.class}) 
class TransfersServiceExceptionSpec { 

} 

私はスカラ座/ JUnitの中でpowermockを使用していた、scalatestとしてはpowermockとの統合を持っていません。

@RunWith(classOf[PowerMockRunner]) 
@PrepareForTest(Array(classOf[XmlConverterA], classOf[XmlConverterB])) 
class TransfersServiceExceptionSpec { 

    @Test 
    def test() { 
    } 
} 
関連する問題