如何在gradle上只运行一个testing类

我是Gradle新手。 我使用Gradle 1.10和Ubuntu 13。

我想知道是否有任何命令只执行一个testing类,类似于SBT中的“testonly”。

为了运行一个单独的testing课,Airborn的答案是好的。

通过使用在这里find的一些命令行选项,你可以简单地做这样的事情。

gradle test --tests org.gradle.SomeTest.someSpecificFeature gradle test --tests *SomeTest.someSpecificFeature gradle test --tests *SomeSpecificTest gradle test --tests all.in.specific.package* gradle test --tests *IntegTest gradle test --tests *IntegTest*ui* gradle someTestTask --tests *UiTest someOtherTestTask --tests *WebTest*ui 

从Gradle 1.10版开始,它支持使用testingfilter来selecttesting。 例如,

 apply plugin: 'java' test { filter { //specific test method includeTestsMatching "org.gradle.SomeTest.someSpecificFeature" //specific test method, use wildcard for packages includeTestsMatching "*SomeTest.someSpecificFeature" //specific test class includeTestsMatching "org.gradle.SomeTest" //specific test class, wildcard for packages includeTestsMatching "*.SomeTest" //all classes in package, recursively includeTestsMatching "com.gradle.tooling.*" //all integration tests, by naming convention includeTestsMatching "*IntegTest" //only ui tests from integration tests, by some naming convention includeTestsMatching "*IntegTest*ui" } } 

你可以做gradle -Dtest.single=ClassUnderTestTest test如果你想testing单个类或像gradle -Dtest.single=ClassName*Test test一样使用正则expression式gradle -Dtest.single=ClassName*Test test你可以在这个链接部分23.12 下find更多的用于testing的string类的例子。 testing

如果你有一个多模块项目:

让我们说你的模块结构是

 root-module -> a-module -> b-module 

和您正在运行的testing(testToRun)是在B模块,完整path:com.xyz.b.module.TestClass.testToRun

在这里你有兴趣在b模块中运行testing,所以你应该看到b模块可用的任务。

 ./gradlew :b-module:tasks 

以上命令将列出带有说明的b模块中的所有任务。 在理想情况下,您将有一个名为test的任务来运行该模块中的unit testing。

 ./gradlew :b-module:test 

现在,您已经达到了在b-module中运行所有testing的目的,最后您可以传递一个参数到上面的任务来运行符合特定path模式的testing

 ./gradlew :b-module:test --tests "com.xyz.b.module.TestClass.testToRun" 

现在,如果你运行,而不是这个

./gradlew test --tests "com.xyz.b.module.TestClass.testToRun"

它将运行模块a和b的testing任务,这可能会导致失败,因为在模块中没有任何与上述模式相匹配。