我知道怎么说
gradle test --tests mypackage.MyTest
但是如何指定多个?
gradle test --tests mypackage.MyTest,mypackage.model.ModelTest,BasicTests
这似乎是随机进行的一项测试。
gradle test --tests mypackage.MyTest mypackage.model.ModelTest BasicTests
这告诉我
任务' mypackage.model.ModelTest'在根项目' myproject'。
中找不到
我阅读了很多手册和教程(以及一些SO帖子),并没有明确提到答案。但我看到有人经过 - 测试"包装。*"作为一个论点,所以我认为空格周围的引号可能会有所帮助。
gradle test --tests "mypackage.MyTest mypackage.model.ModelTest BasicTests"
这不会很快失败,但不幸的是只运行列表中的第一个测试。
所以我猜我刚刚被复数误导了#34; - 测试"并且没有办法真正给它一个列表,对吗?
答案 0 :(得分:2)
Testing in Java & JVM projects上的文档文章非常清楚--tests
选项的工作原理。它只是一个包含过滤器,用于注册要执行的所有匹配测试,与在includeTestsMatching
任务的filter
块中使用Test
的方式相同:
test {
filter {
includeTestsMatching 'org.gradle.internal.*'
}
}
这也是参数名称中复数的原因,因为通配符允许包含任意数量的测试。
请注意,通配符
'*'
对'.'
包分隔符没有特别的了解。它纯粹基于文本。因此--tests *.SomeTestClass
将匹配任何包,无论其“深度”如何。
从Gradle 4.7开始,如果使用大写字母启动过滤器,则可以使用没有包信息的简单类名。
要包含多个不共享公共包结构的测试,您必须并且可以使用多个--tests
参数,如文档中所述:
另请注意,可以提供多个
--tests
选项,其所有模式都将生效。
有关测试过滤器的更多信息,请参阅上面的链接和相关问题:
How to run only one test class on gradle
正如有关您的某种方法无效的其他信息:
在命令行上执行Gradle符合以下结构。在任务名称之前和之后允许选项。
gradle [taskName...] [--option-name...]
在第三个示例中,--tests
选项的其他选项被解释为任务名称,这解释了错误消息,因为具有指定名称的任务不存在。
为了防止选项值和任务名称之间的混淆并阻止任何shell干扰,您应该按照Mr Haki in his blog的建议在引号之间定义过滤器。