Unit testing Gradle测试单元测试-运行除一个或几个之外的所有测试-命令行

Unit testing Gradle测试单元测试-运行除一个或几个之外的所有测试-命令行,unit-testing,command-line,gradle,Unit Testing,Command Line,Gradle,我的项目中有很多JUnit单元测试。构建系统是渐进的。操作系统:Windows/Linux 测试(单元测试)在Gradle中是免费的,即如果您运行“Gradle clean build”,Gradle还将运行“测试”任务(运行您的单元测试)。我知道如何运行测试文件夹中的所有测试,以及命令行中特定测试的所有测试。例如:参见Gradle用户指南中的23.13.3和23.13.4节: 我的问题: 我想运行除一个或一些测试之外的所有测试。如何在命令行的Gradle中执行此操作(而不是在build.Gra

我的项目中有很多JUnit单元测试。构建系统是渐进的。操作系统:Windows/Linux

测试(单元测试)在Gradle中是免费的,即如果您运行“Gradle clean build”,Gradle还将运行“测试”任务(运行您的单元测试)。我知道如何运行测试文件夹中的所有测试,以及命令行中特定测试的所有测试。例如:参见Gradle用户指南中的23.13.3和23.13.4节:

我的问题:


我想运行除一个或一些测试之外的所有测试。如何在命令行的Gradle中执行此操作(而不是在build.Gradle或更高级别的.Gradle文件的test{…}部分中使用exclude)。

您可以根据属性值有条件地添加排除

test {
    if (project.hasProperty('excludeTests')) {
        exclude project.property('excludeTests')
    }
}
然后可以从命令行执行类似的操作

$ gradle -PexcludeTests=org.foo.MyTest build

如果您希望每个命令行排除多个测试,这里是Mark答案的增强版(gradle 6.8.2中的testet):

现在,您可以在命令行上指定多个排除测试:

$ gradlew test -PexcludeTests="**/bar*, **/foo.SomeTest*"

分隔符可以是“;”或“,”,带或不带以下空格。

我认为这可能会起作用(作为最后一个选项)。我认为Gradle测试任务已经内置了这些命令行选项(比如使用-Dsingle.test=…)运行单个测试),谢谢。
test.single
属性是唯一可用的属性。排除项没有等效的属性。据我所知,项目属性添加了“-P”,“-D”用于系统属性,至少在我使用的1.12上是如此。$gradle-PexcludeTests=org.foo.MyTest构建
$ gradlew test -PexcludeTests="**/bar*, **/foo.SomeTest*"