質問

ランナーを変更せずにパラメーター化されたJunit 4テストを実行するクリーンな方法はありますか?@RunWith(Parameterized.class)?

私はすでに特別なランナーを必要とするユニットテストを持っています、そして、私はこれを置き換えることができません Parameterized. 。たぶん、ある種の「ランナーチェーン」があるので、同時に両方のランナーができましたか? (ただ野生の推測...)

役に立ちましたか?

解決

org.junit.runners.Parameterized によって作成されます org.junit.internal.builders.AnnotatedBuilder 反射メカニズムによって。多分あなたは拡張することができます Parameterized あなた自身のランナーとして:@runwith(myParameterized。クラス)。

他のヒント

私は、テストクラスでパラメーター化を実施することができる数人のランナーを含むフレームワークをリリースし、実際のテスト解釈のために任意のサードパーティランナーをチェーンすることができます。

フレームワークはCallBackParams -(http://callbackparams.org) - そして、これらはランナーです。

  • CallBackParamSrunner
  • bddrunner

フレームワークの注釈を使用することによって...

  • @wrappedrunner

...この方法で任意のサードパーティランナーを指定できます。

@RunWith(CallbackParamsRunner.class) // or @RunWith(BddRunner.class)
@WrappedRunner(YourSpecialRunner.class)
public class YourTest {
...

ただし、CallBackParamsを使用したパラメーター化されたテストは、テストパラメーター化への従来のアプローチとは大きく異なります。この理由はこれで説明されています チュートリアル記事 Bddrunnerと説明しました チュートリアル記事の終わり近く.

最初のCallBackParamsテストでは、BDDrunnerが少ないため、おそらくBddrunnerを好むでしょう。これは、ボイラープレートのものが少ないため、さまざまなテストクラス間のパラメーター値の再利用を開始すると、おそらくCallBackParamsrunnerを使用すると、より強いタイプチェックが必要です。

また - bddrunnerを使用すると、 @test -methodsを持っている必要はありません。代わりに、Framework Annotations @Given、@When、@Thenを使用する必要があります。その要件は、サードパーティランナーの要件と衝突することがありますが、通常は非常にうまく機能します。

幸運を!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top