我正在运行 gradle 从 Windows 命令行运行测试。我运行单个测试的方法是:
gradlew.bat chromeTest -DchromeTest.single=test1Spec
或对于所有测试:
gradlew.bat chromeTest
如果我尝试只运行两个这样的测试类:
gradlew.bat chromeTest -DchromeTest=test1Spec,test2Spec--info
然后 gradle 开始运行所有测试。
我需要的是:只运行 2 或 3 个 Groovy 类。具体来说,既不是一个,也不是全部。任何帮助都会非常有益!抱歉,再次转发这个问题。
-DtestTaskName
支持通配符,例如 Test*Spec
或 foo.bar.*Spec
,但仅限于单一模式。如果您需要支持多种模式,则必须实现自己的命令行参数(在最简单的情况下意味着读取系统属性)并使用它来配置 Test#include
或 Test#getFilter
。 (有关详细信息,请参阅 Gradle 构建语言参考中的
Test
。)
Gradle 1.10 引入了
--tests
作为 -DtestTaskName
的替代品,但同样,仅支持一种模式。
根据文档看来,自 Gradle 2.13 起,可以使用
--tests
参数指定多个模式,因为从本文档的版本开始,在描述中添加了以下部分(以粗体显示):
提供命令行选项“--tests”,方便设置测试 筛选。对于经典的“单一测试方法”特别有用 执行'用例。当使用命令行选项时, 构建脚本中声明的包含过滤器将被忽略。 是 可以提供多个“--tests”选项和与任何匹配的测试 这些模式将被包括在内。
然后以下命令就可以工作:
gradle test --tests some.pattern.class --tests different.pattern.class
另外,正如 @PeterNiederwieser 所解释的,您可以在
TestFilter
中配置 build.gradle
,包括或排除包、类和方法的不同模式。以下示例来自 gradle api 文档:
test {
filter {
//specific test class, this can match 'SomeTest' class and corresponding method under any package
includeTestsMatching "SomeTest"
includeTestsMatching "SomeTest.someTestMethod*"
...
//specific test class and method
includeTestsMatching "org.gradle.SomeTest.someSpecificFeature"
includeTest "org.gradle.SomeTest", "someTestMethod"
...
//exclude a specific test by its name
excludeTestsMatching "*canDoSomethingSpecific"
//excluding tests by name also works for test names which have spaces
excludeTestsMatching "*can do something specific"
}
}