繁体   English   中英

如何使用 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符合以下结构。 任务名称之前和之后均允许使用选项。

gradle [taskName...] [--option-name...]

在您的第三个示例中,-- --tests选项的其他选项被解释为任务名称,因为没有指定名称的任务,所以解释了错误消息。

为了防止选项值和任务名称之间的混淆并阻止任何shell干扰,您应该按照Haki先生在其博客中的建议在引号之间定义过滤器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM