49

私は、PowerMockと一緒にJunit4でパラメーター化されたテストを実行する方法を理解しようとしてきました。問題は、PowerMockを使用するには、テストクラスを次のように装飾する必要があることです。

@RunWith(PowerMockRunner.class)

パラメータ化されたテストを使用するには、装飾する必要があります

@RunWith(Parameterized.class)

私が見ることができることから、それらは相互に排除されているように見えます!?これは本当ですか?これを回避する方法はありますか?PowerMockで実行されているクラス内にパラメーター化されたクラスを作成しようとしました。このようなもの:

@RunWith(PowerMockRunner.class)
class MyTestClass {
     @RunWith(Parameterized.class)
     class ParamTestClass {
          // Yadayada
     }
}

しかし、残念ながら、これはあまり効果がありません...ParamTestClassそれでもPowerMockサポートでは動作しません(驚くことではないかもしれませんが)...そして私はアイデアが不足しているので、助けていただければ幸いです!

更新: 将来のグーグルについては、「RunWithなしでPowerMockを使用しますか?」も参照してください。

4

4 に答える 4

41

同じ問題がありました。残念ながら、JVM が原因で PowerMock ルールを使用できませんでした。ルールの代わりに、RunnerDelegate を使用しました。

@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(Parameterized.class)
于 2015-05-11T18:45:53.853 に答える
16

はい、これは、 JUnit 4.7 以降を使用している場合に利用可能なPowerMockルールを使用して機能します。

于 2010-04-06T18:06:27.973 に答える
-1

一度に 2 つのクラス ランナーを使用することはできないため、それを実現するには、必ず独自のテスト ランナーを作成する必要があります。

Powermock については何も知りませんが、10 秒ほど調べてみると、powermock のクラス ローダーを使用してパラメーター化されたテストを実行するテスト ランナーを作成することが 1 つの解決策のようです。カスタム テスト ランナー内からパラメーター化されたテスト ランナーに委任する方法を理解できる場合は、それが最善の策かもしれません。

于 2010-03-16T13:38:10.357 に答える
-1

次の解決策は私のために働いた!

@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(Parameterized.class)
于 2020-05-12T14:30:50.490 に答える