Junit 4.11参数化和分类方法

时间:2013-11-12 12:00:14

标签: java junit categories parameterized

我已经参数化了junit测试,我想将测试函数分组,以便在一个测试套件中运行一个组,而在另一个测试套件中运行另一个组。

我试过的是这个:

识别TestClass:

@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或其他测试框架)?

2 个答案:

答案 0 :(得分:3)

您可以创建自己的org.junit.runner.Runner来执行此操作。它并不像它看起来那么难。使用自己的跑步者,您可以构建自己的测试用例树,JUnit将相应地显示它。在您的情况下,您的树结构将反映类别注释。

答案 1 :(得分:2)

有一个issue for JUnit将在JUnit 4.13中修复。