JUnit4类别结果在@SuiteClasses与TestSuite之间有所不同

时间:2017-06-22 19:53:47

标签: java junit4

我正在尝试使用针对AllTests测试套件的类别运行JUnit4测试。在示例1中运行Suite3,而运行Suite2的示例2产生以下异常。

java.lang.Exception: Category annotations on Parameterized classes
are not supported on individual methods.

我需要在执行测试时生成TestSuite。

有关如何纠正问题的任何建议? 感谢

示例1

@RunWith(Categories.class)
@IncludeCategory(SlowTest.class)
@SuiteClasses(AllTests3.class)
public class Suite3 {
}

@RunWith(Suite.class)
@SuiteClasses({
           MathUtilTest.class, MathUtil2Test.class
})
public class AllTests3 {
}

示例2

@RunWith(Categories.class)
@IncludeCategory(SlowTest.class)
@SuiteClasses(AllTests2.class)
public class Suite2 {
}

public final class AllTests2 {
    public static TestSuite suite() {
        final TestSuite result = new TestSuite();
        result.addTest(new JUnit4TestAdapter(MathUtilTest.class));
        result.addTest(new JUnit4TestAdapter(MathUtil2Test.class));
        return result;
    }

    private AllTests2() {
    }

1 个答案:

答案 0 :(得分:1)

最新稳定版JUnit 4(4.12)中存在各种相关错误:

https://github.com/junit-team/junit4/issues/1203

有人为未发布的4.13-SNAPSHOT版本提供修复,您可以通过在https://github.com/junit-team/junit4克隆他们的GitHub仓库来构建和检查自己

但是,我自己运行了几个测试,并且必须得出结论:@Category注释在MathUtilTest类上使用时确实有效,但只有在注释类时,注释才会在单个测试方法上使用时被忽略。