文档文章关于在 Java 和 JVM 项目中进行测试 https://docs.gradle.org/current/userguide/java_testing.html#test_filtering非常清楚如何--tests
选项有效。它只是一个包容性过滤器,注册所有要执行的匹配测试,与使用相同的方式includeTestsMatching
in the filter
一个块Test
task:
test {
filter {
includeTestsMatching 'org.gradle.internal.*'
}
}
这也是参数名称中使用复数的原因,因为通配符允许包含任意数量的测试。
注意通配符'*'
没有特别的了解'.'
包分隔符。它纯粹基于文本。所以--tests *.SomeTestClass
将匹配任何包,无论其“深度”如何。
从 Gradle 4.7 开始,如果您以大写字母开头过滤器,则可以使用没有包信息的简单类名。
要包含不共享公共包结构的多个测试,您必须并且可以使用多个--tests
参数,如文档中所述:
另请注意,可以提供多个--tests
选项,其所有模式都会生效。
有关测试过滤器的其他信息可以在上面的链接和此相关问题中找到:
如何在gradle上只运行一个测试类 https://stackoverflow.com/questions/22505533/how-to-run-only-one-test-class-on-gradle
正如有关为什么您的一种方法不起作用的附加信息一样:
在命令行上执行 Gradle 符合以下结构。任务名称之前和之后允许使用选项。
gradle [taskName...] [--option-name...]
在你的第三个例子中,其他选项--tests
选项被解释为任务名称,这解释了错误消息,因为具有指定名称的任务不存在。
为了防止选项值和任务名称之间的混淆并阻止任何 shell 干扰,您应该按照以下建议在引号之间定义过滤器哈基先生在他的博客中 http://mrhaki.blogspot.com/2016/06/gradle-goodness-running-all-tests-from.html.