ランナーを変更せずにパラメーター化されたJunitテスト
-
12-10-2019 - |
質問
ランナーを変更せずにパラメーター化された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を使用する必要があります。その要件は、サードパーティランナーの要件と衝突することがありますが、通常は非常にうまく機能します。
幸運を!