2016-05-05 12 views
0

ユースケースは以下の通りです。私は、パラメータ化されていないテストと、パラメータ化されていないテストでは異なるパラメータを組み合わせることができるようにしたいと考えています。これは私も私は興味がない非パラメータ化テストの複数回の実行につながる、パラメータ化する必要があり、それぞれの新しいユニットテストのためのコンストラクタを爆破されますようParameterized.classを使用してjUnitでパラメータ化されていないテストを組み合わせることは可能ですか?

はやり過ぎのビットを思わ。

私はTheories.classについて考えていましたが、複数の@DataPointを提供することはできますが、それらはテスト関数の各引数として渡された個々の型を参照しており、テストされた関数は1つだけです。

私はfooTest1, 2, 3, 4, 5それぞれ6, 7, 8, 9, 10barTestでテストされて

@RunWith(Theories.class) 
class Test{ 
    @Theory(named="foo") 
    public void fooTest(Object input) { 
    } 

    public static @DataPoints(named="foo") Object[] inputs = {1, 2, 3, 4, 5}; 

    @Theory(named="bar") 
    public void barTest(Object input) { 
    } 

    public static @DataPoints(named="bar") Object[] inputs = {6, 7, 8, 9, 10}; 

    public void bazTest() { 
    } 
} 

ような何かを達成したいと思います。

Theoryを使用して達成する方法はありますか?それを達成するための選択肢はありますか?

+0

私はあなたがそのための2つの異なるテストクラスを作成する必要が怖いです。 これを可能にするTestNGに切り替えることもできます。 –

+0

@tamasrev他のものへの切り替えはオプションではありません。 –

答えて

1

Theoriesランナーとテストスタイルを混在させることはできません。しかし、JUnitParamsのような第三者のパラメータ設定されたランナーは、この方法で使用できます。

例えば

@RunWith(JUnitParamsRunner.class) 
public class PersonTest { 

    @Test 
    @Parameters({"17, false", 
       "22, true" }) 
    public void personIsAdult(int age, boolean valid) throws Exception { 
    assertThat(new Person(age).isAdult(), is(valid)); 
    } 

    @Test 
    public void lookNoParams() { 
    etc 
    } 

} 
+0

jUnitが提供する機能をそのまま使用するオプションを実際に探しています。代替案は一般的な知識向上のためのものです。 –

関連する問題