Junit 4.11 参数化和分类方法



我已经参数化了JINIT测试,我想对测试功能进行分组,以便在一个测试套件中运行一组,在另一个测试套件中运行另一组。

我尝试的是这样的:

测试类:

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

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

JUnit 有一个问题将在 JUnit 4.13 中修复。

最新更新