不能使用gradle按类别包含/排除Junit测试类

时间:2016-08-10 11:36:56

标签: java gradle junit build.gradle junit4

鉴于这些接口

testclient.priority.High
testclient.priority.Low

和一个这样注释的junit类

@Category(testclient.priority.High.class)
public class MyTest {
...
}
@Category(testclient.priority.Low.class)
public class MyOtherTest {
...
}

我尝试在build.gradle中配置包含/排除模式,如此

useJUnit {
    includeCategories 'testclient.priority.High'
    excludeCategories 'testclient.priority.Low'
}

问题是根本没有运行没有测试。如何实现这一目标的确切语法? 我正在使用gradle 2.14.1并通过" clean build"。

调用测试

2 个答案:

答案 0 :(得分:1)

这适用于Gradle 2.12。我不知道我们各自环境之间有什么不同,但我已将my solution on GitHub作为参考。

请注意,我已将FastTest.javaSlowTest.java放置在测试所在的src/test/java/net/codetojoy文件夹中。

答案 1 :(得分:1)

我自己发现了这个问题。我错过了这个事实

High extends Low

因此排除正确影响了所有带注释的测试。扩展是有意的,build.gradle中的正确模式只是:

useJUnit {
    includeCategories 'testclient.priority.High'
}

实际上有五个优先级,扩展依赖是一种简单的方法来配置类似"运行此级别或更高级别的所有内容"。