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

我想知道是否有任何命令只执行一个单元测试类,类似于SBT中的testOnly。


当前回答

下面是使用gradlew命令行选项运行单个测试类的命令:

gradlew.bat Connected**your bundleVariant**AndroidTest -Pandroid.testInstrumentationRunnerArguments.class=com.example.TestClass

使用变量Variant_1运行com.example.TestClass类:

gradlew.bat ConnectedVariant_1AndroidTest -Pandroid.testInstrumentationRunnerArguments.class=com.example.TestClass 

其他回答

请注意——tests选项可能无法工作,如果你有不同的构建类型/口味(失败与未知命令行选项“——tests”)。在这种情况下,有必要指定特定的测试任务(例如testProdReleaseUnitTest而不是test)

经过深思熟虑后,我发现以下方法对我很有效:

测试“a.b.c.m etestfile . mysingletest”

运行一个名为MyTest的测试:

./gradlew app:testDebug --tests=com.example.MyTest

这对我很有效

释放的例子: gradle testReleaseUnitTest——测试testClass 调试情况: gradle testDebugUnitTest——测试AsyncExecutorTest

您可以使用:gradle -q projects查看项目,并移动到要测试的类所在的项目

要运行单个测试类,Airborn的答案很好。

通过使用一些命令行选项(在这里可以找到),您可以简单地执行如下操作。

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 test --tests '*IntegTest.singleMethod'
gradle someTestTask --tests '*UiTest' someOtherTestTask --tests '*WebTest*ui'

从gradle的1.10版本开始,它支持使用测试过滤器选择测试。例如,

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"
   }
}

对于多风格的环境(Android的常见用例),检查这个答案,因为——tests参数将不受支持,您将得到一个错误。