我的项目中有很多JUnit单元测试。构建系统是Gradle。操作系统:Windows/Linux。
Test(单元测试)在Gradle中是免费的,即如果您运行"Gradle clean build",Gradle也将运行"Test"任务(运行单元测试)。我知道如何在测试文件夹中运行所有测试,在命令行中运行特定测试。例如:参见Gradle用户指南中的23.13.3和23.13.4节:http://www.gradle.org/docs/current/userguide/java_plugin.html#sec:java_test
我的问题:
我想运行除一个或几个测试之外的所有测试。我如何在命令行的Gradle中做到这一点(而不是在build.Gradle或更高级别的.Gradle文件的test{…}部分中使用exclude)。
您可以根据属性值有条件地添加排除。
test {
if (project.hasProperty('excludeTests')) {
exclude project.property('excludeTests')
}
}
然后,您可以从命令行执行类似的操作。
$ gradle -PexcludeTests=org.foo.MyTest build
如果您想在每个命令行中排除多个测试,这里是Mark答案的增强版本(6.8.2级中的测试集):
if (project.hasProperty('excludeTests')) {
project.properties['excludeTests']?.replaceAll('\s', '')?.split('[,;]').each {
exclude "${it}"
}
}
在命令行上,您现在可以指定多个排除测试:
$ gradlew test -PexcludeTests="**/bar*, **/foo.SomeTest*"
分离器可以是"或"&";,带有或不带有跟随空格。