我知道怎么说
gradle test --tests mypackage.MyTest
Run Code Online (Sandbox Code Playgroud)
但如何指定多个呢?
gradle test --tests mypackage.MyTest,mypackage.model.ModelTest,BasicTests
Run Code Online (Sandbox Code Playgroud)
这似乎只是随机运行其中一项测试。
gradle test --tests mypackage.MyTest mypackage.model.ModelTest BasicTests
Run Code Online (Sandbox Code Playgroud)
这告诉我
在根项目“myproject”中找不到任务“mypackage.model.ModelTest”。
我阅读了很多手册和教程(以及一些 SO 帖子),但发现没有明确提及答案。但我看到有人传递 --tests "somepackage.*" 作为参数,所以我认为空格周围的引号可能会有所帮助。
gradle test --tests "mypackage.MyTest mypackage.model.ModelTest BasicTests"
Run Code Online (Sandbox Code Playgroud)
这不会很快失败,但不幸的是只运行列表中的第一个测试。
所以我想我只是被“--tests”中的复数形式误导了,并且没有办法真正给出一个列表,对吗?
这是一个简单的例子,如果有人想要的话,我就是这样。
--tests "test.packageFoo.*" --tests "test.packageBar.*"
Run Code Online (Sandbox Code Playgroud)
如果你再进行一次测试,效果很好。这个例子不在文档中。
关于Java 和 JVM 项目中的测试的文档文章非常清楚地说明了该--tests选项的工作原理。includeTestsMatching它只是一个包容性过滤器,注册所有要执行的匹配测试,与在任务filter块中使用的方式相同Test:
test {\n filter {\n includeTestsMatching \'org.gradle.internal.*\'\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n这也是参数名称中使用复数的原因,因为通配符允许包含任意数量的测试。
\n\n\n\n\n注意,通配符
\n\'*\'对包分隔符没有特殊的理解\'.\'。它\xe2\x80\x99s 纯粹基于文本。所以--tests *.SomeTestClass将匹配任何包,无论其“深度”如何。
从 Gradle 4.7 开始,如果您以大写字母开头过滤器,则可以使用没有包信息的简单类名。
\n\n要包含不共享公共包结构的多个测试,您必须并且可以使用多个--tests参数,如文档中所述:
\n\n\n另请注意,可以提供多个
\n--tests选项,所有模式都将生效。
有关测试过滤器的其他信息可以在上面的链接和此相关问题中找到:
\n\n\n\n正如有关为什么您的一种方法不起作用的附加信息一样:
\n\n\n\n\n在命令行上执行 Gradle 符合以下结构。任务名称之前和之后允许使用选项。
\n\n\n
gradle [taskName...] [--option-name...]
在第三个示例中,该--tests选项的其他选项被解释为任务名称,这解释了错误消息,因为具有指定名称的任务不存在。
为了防止选项值和任务名称之间发生混淆并阻止任何 shell 干扰,您应该按照Haki 先生在其博客中的建议在引号之间定义过滤器。
\n| 归档时间: |
|
| 查看次数: |
4488 次 |
| 最近记录: |