5

テスト関数をグループ化して、あるグループをあるテストスイートで実行し、他のグループを別のテストスイートで実行するようにしたいパラメータ化されたjunitテストがあります。

私が試したのはこれです:

テストクラス:

@RunWith(Parameterized.class)
public class TestClass {

    private int test;

    public TestClass(int test){
        this.test = test;
    }

    @Parameters
    public static Collection<Object[]> data(){
        return Arrays.asList(new Object[][]{{1},{1}});
    }

    @Test
    @Category(A.class)
    public void aTest(){
        assertEquals(1, test);
    }

    @Test
    @Category(B.class)
    public void bTest(){
        assertEquals(1, test);
    }

}

テスト スイート:

@SuiteClasses({TestClass.class})
@RunWith(Categories.class)
@IncludeCategory(A.class)
public class Suite {

}

メソッドではなくテストクラスに注釈を付けると、機能します。ただし、テストクラスではなく関数を分類したいのですが、それを試みると次のエラーが発生します。

Category annotations on Parameterized classes are not supported on individual methods

これを機能させるにはどうすればよいですか (TestNG または別のテスト フレームワークに切り替えることなく)。

4

2 に答える 2

3

これを行うには、独自の org.junit.runner.Runner を作成できます。見た目ほど難しくありません。独自のランナーを使用して、独自のテスト ケースのツリーを構築すると、JUnit がそれに応じて表示します。あなたの場合、ツリー構造はカテゴリの注釈を反映します。

于 2013-11-12T12:12:47.903 に答える