Android Instrumentation 测试无法测试发布构建

3

我正在使用Android测试仪器测试我的示例应用程序。默认情况下,项目为我创建了一个名为 AndroidTest 的文件夹。我只需将更多测试案例添加到该文件夹中。

我曾经使用 expresso 来触发UI按钮,但现在我想仅使用androidTest进行测试,然而,androidTest似乎并没有测试我的发布版本。在这种情况下,我有两个变体 productionRelease stageDebug

每次我启动项目时:

./gradlew mysample:connectedCheck 

或者
./gradlew mysample:connectedAndroidTest

仅限IT测试

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个回答

4
只需运行./gradlew mysample:testDebugUnitTest./gradlew mysample:testReleaseUnitTest即可分别对调试或发布版本的测试运行测试。如果需要硬件传感器,可以在测试中添加注释@RequiresDeviceproductionReleasestageDebug 看起来过于复杂(并且也不符合其余命名的规范 - 除非也有productionDebugstageRelease),导致任务名称更长,建议缩短名称...
buildTypes {
    debug {}
    release {}
}

当我运行./gradlew mysample:connectedAndroidTest时,我遇到了一个问题:

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

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

1
好的,我可能误解了你在这里写的内容。那么,androidTest只适用于调试版本吗? - Shivam Pokhriyal
1
一个人实际上可以用 testBuildType 来改变它,但对于发布版本,只能使用 UiAutomator2testBuildType "debug" 可能是最常见和方便的选择。 - Martin Zeitler
明白了!非常感谢! - Shivam Pokhriyal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接