3

パラメータ化された JUnit テストをプレイで使用したい! フレームワーク (1.2.5) アプリケーション。

これは私の非常に簡単なテスト例です:

import java.util.Arrays;
import java.util.List;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

import play.test.FunctionalTest;

@RunWith(Parameterized.class)
public class ParameterizedExampleTest extends FunctionalTest {

    private int i;

    @Parameters
    public static List<Object[]> parameters() {
        return Arrays.asList(new Object[][] {{1},{2},{3}});
    }

    public ParameterizedExampleTest(int i) {
        this.i = i;
    }

    @Test
    public void someTest() {
        System.out.println("i is " + i);
    }
}

テストを実行すると、IllegalArgumentException「テストクラスはコンストラクターを 1 つしか持てません」と表示されます。アノテーションがあり、コンストラクターがFunctionalTest extends BaseTestあることに完全に同意します。@RunWith(PlayJUnitRunner.class)PlayJUnitRunner

どんな助けでも大歓迎です!

4

1 に答える 1

1

私はかなり良い解決策を見つけました:

import java.util.Arrays;
import java.util.List;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameter;
import org.junit.runners.Parameterized.Parameters;

import play.test.FunctionalTest;

@RunWith(Parameterized.class)
public class ParameterizedExampleTest extends FunctionalTest {

    @Parameter(0)
    public int i;

    @Parameters
    public static List<Object[]> parameters() {
        return Arrays.asList(new Object[][] {{1},{2},{3}});
    }

    @Test
    public void someTest() {
        System.out.println("i is " + i);
    }
}

@Parameter(...)注釈とパラメーター配列内のパラメーターの番号でパラメーターをマークする必要があります。コンストラクターは必要ないため、プレイするとスムーズに実行されます。

欠点: この機能は play (1.2.5) に付属している 4.10 では実装されていないため、JUnit 4.11 が必要になります。

于 2013-03-14T10:10:42.097 に答える