2016-04-28 12 views
0

私はいくつかのjUnit4テストクラスを持っています。これは、アノテーションで渡されたさまざまなパラメーターで複数回実行したいものです。たとえば、次のように:jUnitランナーが異なるパラメーターでテストクラスを複数回実行する

@RunWith(MyClassRunner.class) 
@Params("paramFor1stRun", "paramFor2ndRun") 
class MyTest { 
    @Test 
    public void doTest() {..} 
} 

私はランナーはそれで私を助けることができますが、私はこれを実装する方法がわからないと仮定します。アドバイスお願いしますか?

+0

この回答以外にも、次のURLを参照してください。https://github.com/EaseTech/easytest-core – SiKing

答えて

2
  1. 注釈@RunWith(Parameterized.class)をテストに追加する必要があります。
  2. 次に、パラメータを指定して、あなたのクラスのコンストラクタを作成する次のものが必要です。

    @Parameters 
    public static Collection<Object[]> data() { 
        Object[][] data = {{"p11","p12"},{"p21","p22"}} 
        return Arrays.asList(data); 
    } 
    

    public Test(String pParam1, String param2) { 
        this.param1 = pParam1; 
        this.param2 = pParam2; 
    } 
    
  3. 次に、(コンストラクタに対応するパラメータの配列を提供します)、このようなメソッドを宣言

    @Test 
    public void myTest() { 
        assertEquals(this.param1,this.param2); 
    } 
    
  4. あなたはあなたの配列の行ごとに実行されるテストを行うことができます

アノテーション@Parameter(value = N)を使用すると、コンストラクタを定義することなく、より高速な方法が得られます。ここで、Nはパラメータ配列のインデックスです。

+0

これらのテストを異なる名前で実行する方法はありますか?私はジェンキンスで、これらのクラスの実行を次のように観察する必要があることを意味します。MyTest.doTest [paramsFor1stRun]、MyTest.doTest [paramsFor2ndRun] – awfun

+0

このスレッドはあなたの質問に答えますか? http://stackoverflow.com/questions/650894/changing-names-of-parameterized-testsこれはJUnit 4.11以降に存在するようです。 – Akah

+0

ありがとう、私は自分のテストランナーを作ることにしましたが、Parametrizedランナーは私に多くの理解を助けました。おそらく私はテストを管理するためにこれを将来使用するだろう – awfun

関連する問題