有没有办法使用Gradle运行特定的Android检测单元测试?我试过了
gradle -Dtest.single=UnitTestName connectedInstrumentTest
但它似乎在包中运行所有测试。
答案 0 :(得分:22)
似乎不推荐使用test.single
。新的正确方法是
./gradlew :<module>:test --tests <pattern>
<pattern>
可能是这样的:
com.example.MyTest
在com.example.MyTest *MyTest
匹配名称以MyTest *.MyTest.myMethod
在任何包如果您有多项目构建,请确保在test
任务之前提供模块路径;否则,当您在每个子项目中搜索测试模式时,您将收到误导性的错误消息。
Gradle网站上任何我都找不到的内容都没有记录。
答案 1 :(得分:20)
模式为-D<testTaskName>.single=<TestClass>
,因此在您的示例中应该是:
gradle -DconnectedInstrumentTest.single=UnitTestName connectedInstrumentTest
注意:此答案已过时。您应该使用最新版Gradle中的
--tests
开关。 (参见其他答案的解释)
答案 2 :(得分:15)
如果您使用的是instrumentationTestRunner
:
./gradlew test -Pandroid.testInstrumentationRunnerArguments.class='<pkg>.YourClassName'
使用gradle 2.10和android gradle插件2.0.0-beta2。
由于您知道要运行哪些测试,因此您可能知道要使用哪个模块/风格。您可以通过指定确切的模块和Gradle任务来帮助Gradle out。因此,如果您的测试位于app
模块中,并且您想测试debug
风格:
./gradlew app:connectedDebugAndroidTest -Pandroid.testInstrumentationRunnerArguments.class='<pkg>.YourClassName'
答案 3 :(得分:6)
由于Android gradle插件1.1.0-rc1,可以通过执行以下命令运行--tests
标志来运行单个测试类:
./gradlew testDebug --tests=com.example.MyTest
请参阅http://tools.android.com/tech-docs/unit-testing-support#TOC-Running-from-Gradle
答案 4 :(得分:1)
你得检查一下。
https://github.com/JCAndKSolutions/android-unit-test
我在这个github存储库中遇到了一个问题,这个人解决了我的问题并上传到了maven,所以在我的build.gradle文件中我使用了这个插件。
说明书写在他的资料库中。你可以轻松地遵循它。
使用这个android-unit-test插件后,我可以使用
../gradlew -Dtest.single=SomeTest test
或
../gradlew -Dtest.single=SomeTest clean check
现在它正在运行,我只能运行我想要的特定测试
答案 5 :(得分:0)
Erdi的回答并不适合我,但我的所有考试班都有单亲,所以我能够这样做:
public abstract class BaseEspressoTest<T extends Activity> extends ActivityInstrumentationTestCase2<T> {
//...
@Override
protected void runTest() throws Throwable {
if(getClass().getSimpleName().equals("MyTestClassName")) {
super.runTest();
}
}
//...
}
仅执行MyTestClassName
。我们可以进一步扩展它以仅执行特定的测试方法(或方法):
public abstract class BaseEspressoTest<T extends Activity> extends ActivityInstrumentationTestCase2<T> {
//...
@Override
protected void runTest() throws Throwable {
if("MyTestClassName".equals(getClass().getSimpleName())
&& "testMethodName".equals(getName())) {
super.runTest();
}
}
//...
}
答案 6 :(得分:0)
Gradle命令对我不起作用。 我在下面使用了改进的adb命令。 为此,您需要先构建apk。
仪器的adb外壳-w -r -e软件包-e debug false .debug.test / android.support.test.runner.AndroidJUnitRunner