![](/img/trans.png)
[英]How to run tests multiple times with different system property values in Gradle
[英]How to run multiple named tests with Gradle?
我知道怎么说
gradle test --tests mypackage.MyTest
但如何指定多个?
gradle test --tests mypackage.MyTest,mypackage.model.ModelTest,BasicTests
这似乎只是随机运行其中一项测试。
gradle test --tests mypackage.MyTest mypackage.model.ModelTest BasicTests
这告诉我
在根项目“myproject”中找不到任务“mypackage.model.ModelTest”。
我阅读了很多手册和教程(以及一些 SO 帖子),但没有发现明确提及答案。 但我看到有人通过 --tests "somepackage.*" 作为参数,所以我认为空格周围的引号可能会有所帮助。
gradle test --tests "mypackage.MyTest mypackage.model.ModelTest BasicTests"
这不会很快失败,但不幸的是只运行列表中的第一个测试。
所以我想我只是被“--tests”中的复数误导了,没有办法真正给它一个列表,对吧?
这是一个简单的例子,如果有人在追一个,我就是。
--tests "test.packageFoo.*" --tests "test.packageBar.*"
如果您只有另一个 --tests,它会很好用。 这个例子不在文档中。
关于Java和JVM项目中的测试的文档文章非常清楚--tests
选项的工作方式。 它只是一个包含性的筛选器,注册要执行的所有匹配测试的方式与在Test
任务的filter
块中使用includeTestsMatching
方式相同:
test {
filter {
includeTestsMatching 'org.gradle.internal.*'
}
}
这也是参数名称中使用复数形式的原因,因为通配符允许包含任意数量的测试。
请注意,通配符
'*'
对'.'
没有特殊的理解'.'
包装分离器。 它是纯粹基于文本的。 因此--tests *.SomeTestClass
将匹配任何软件包,无论其“深度”如何。
从Gradle 4.7开始,如果使用大写字母启动过滤器,则可以使用不带包信息的简单类名。
要包括多个不共享包结构的测试,您必须并且可以使用多个--tests
参数,如文档中所述:
还要注意,可以提供多个
--tests
选项,所有选项都会生效。
有关测试过滤器的其他信息,可以在上面的链接以及与此相关的问题中找到:
正如有关为什么您的方法之一不起作用的其他信息一样:
在命令行上执行Gradle符合以下结构。 任务名称之前和之后均允许使用选项。
gradle [taskName...] [--option-name...]
在您的第三个示例中,-- --tests
选项的其他选项被解释为任务名称,因为没有指定名称的任务,所以解释了错误消息。
为了防止选项值和任务名称之间的混淆并阻止任何shell干扰,您应该按照Haki先生在其博客中的建议在引号之间定义过滤器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.