Android Instrumentation测试不测试Release版本

时间:2018-01-17 23:39:45

标签: android android-testing

我目前正在使用Android检测测试我的示例应用。默认情况下,项目为我创建AndroidTest文件夹。我只是在文件夹中添加了更多测试用例。

我曾经使用expresso来触发UI按钮,但是现在我想测试只使用androidTest,但是,androidTest似乎没有测试我的发布版本。在这种情况下,我有两个变体productionReleasestageDebug

每次我通过

开始项目
./gradlew mysample:connectedCheck 

./gradlew mysample:connectedAndroidTest

仅测试

Task :mysample:connectedStageDebugAndroidTest

如果我想手动启动任务

./gradlew mysample:connectedProductionReleaeAndroidCheck 

它抱怨mysample中找不到的任务

* What went wrong:
Task 'connectedProductionReleaseAndroidTest' not found in project ':mysample'.

不是connectCheck应该测试我项目中的所有变种吗? (StageDebugProductionRelease

来自task --all

mysample:connectedCheck - Runs all device checks on currently connected devices.
mysample:connectedAndroidTest - Installs and runs instrumentation tests for all flavors on connected devices.

1 个答案:

答案 0 :(得分:1)

刚试过......可以简单地运行./gradlew mysample:testDebugUnitTest./gradlew mysample:testReleaseUnitTest - 它运行调试或发布版本的测试。例如,可以将注释@RequiresDevice添加到测试中。一个需要硬件传感器。

productionReleasestageDebug似乎过于复杂(并且它也与命名的其余部分不匹配 - 除非还有productionDebugstageRelease,因此在更长的任务名称中,建议缩短......

buildTypes {
    debug {}
    release {}
}

这时我跑./gradlew mysample:connectedAndroidTest我宁愿得到

  

任务执行失败':mysample:connectedDebugAndroidTest'。   com.android.builder.testing.api.DeviceException:没有连接的设备!

关闭Android Studio(以及它启动的ADB守护程序)后,我可以在硬件设备上运行测试。只有installDebugAndroidTest任务,但没有installReleaseAndroidTest任务。 testBuildType 'release'可能针对发布版本运行测试 - 问题只是androidTestImplementation很可能不会被包含(非常无用)。