【问题标题】:Junit 4.11 parameterized and categorized methodsJunit 4.11 参数化和分类方法
【发布时间】:2013-11-12 12:00:13
【问题描述】:

我有参数化的 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 或其他测试框架)?

【问题讨论】:

    标签: java junit categories parameterized


    【解决方案1】:

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

    【讨论】:

    • 我试图以这种方式解决它,但没有成功。你能给我举个小例子吗?
    • 是的,我可以,但不幸的是,现在不行。我编写的代码可以执行类似的操作,但如果您可以等待,则只能在 7.5 小时内完成。
    • 很高兴知道!恭喜
    【解决方案2】:

    issue for JUnit 将在 JUnit 4.13 中修复。

    【讨论】:

      猜你喜欢
      • 2015-08-14
      • 1970-01-01
      • 2014-09-23
      • 1970-01-01
      • 1970-01-01
      • 2018-10-01
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      相关资源
      最近更新 更多