使用gradle运行特定的单元测试

Iva*_*mov 39 android unit-testing gradle

有没有办法使用Gradle运行特定的Android单元测试?我试过了

gradle -Dtest.single=UnitTestName connectedInstrumentTest
Run Code Online (Sandbox Code Playgroud)

但它似乎在包中运行所有测试.

提前谢谢,伊万.

Chr*_*nes 22

使用test.single似乎已被弃用.这样做的新正确方法是

./gradlew :<module>:test --tests <pattern>
Run Code Online (Sandbox Code Playgroud)

哪里<pattern>可能是这样的:

  • com.example.MyTest 在com.example.MyTest中运行所有测试方法
  • *MyTest 匹配名称以MyTest结尾的每个类中的每个方法
  • *.MyTest.myMethod 在任何包中的MyTest类中运行特定的测试方法

如果您有多项目构建,请确保在test任务之前提供模块路径; 否则,当您在每个子项目中搜索测试模式时,您将收到误导性错误消息.

Gradle站点上的任何内容都没有记录在我能找到的地方.

  • 给我'未知的命令行选项' - 测试' (30认同)
  • 我得到`未知命令行选项' - 测试'`如果我做`./gradlew测试 - 测试*MyTest`,但如果我做`./gradlew testStagingDebug --tests*Mytest`它可以正常工作.(我的项目有味道,所以`testStagingDebug`是我通常运行以执行测试的任务,尽管`test`任务存在且有效.) (5认同)
  • 当然这是一个应用java插件的模块?当然,它不是Gradle的古老版本? (2认同)
  • 除非你在模式中指定通配符或使用:<module>:testDebug(或其他一些风格),你似乎得到``unknown命令行选项' - 测试'` (2认同)
  • 而不是`--tests`我得到了以下工作`./gradlew :app:connectedDebugAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=com.locuslabs.android.sdk.TestActivityTest`感谢https://stackoverflow.com/a/ 49403467/2848676 (2认同)

erd*_*rdi 20

该模式是-D<testTaskName>.single=<TestClass>这样在你的榜样应该是:

gradle -DconnectedInstrumentTest.single=UnitTestName connectedInstrumentTest
Run Code Online (Sandbox Code Playgroud)

注意:此答案已过时.您应该使用--tests最新版本的Gradle中的开关.(见解释的其他答案)


jlh*_*ora 16

如果你使用的是instrumentationTestRunner:

./gradlew test -Pandroid.testInstrumentationRunnerArguments.class='<pkg>.YourClassName'
Run Code Online (Sandbox Code Playgroud)

使用gradle 2.10和android gradle插件2.0.0-beta2

  • 这也适用于在连接电话上运行测试:`./gradlew connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.class ='<pkg> .YourClassName'` (4认同)
  • 这是唯一真正适用于 Android Gradle 插件 2.0 及更高版本的仪器测试的版本。语法更糟糕,但是是的...... (2认同)
  • 为了测试特定的包,它是`-Pandroid.testInstrumentationRunnerArguments.package=my.package` (2认同)

hid*_*dro 7

从Android gradle插件1.1.0-rc1开始,可以--tests通过执行以下命令运行单个测试类:

./gradlew app:testDebug --tests=com.example.MyTest
Run Code Online (Sandbox Code Playgroud)

请参阅http://tools.android.com/tech-docs/unit-testing-support#TOC-Running-from-Gradle