尝试使用 Circleci 构建 Android 应用程序 Espresso Instrumentation Tests 时
Unknown platform error occurred when running the UTP test suite.
任务:app:connectedDebugAndroidTest失败
测试结果保存为文件:/home/circleci/code/app/build/outputs/androidTest-results/connected/test-result.pb。通过从菜单栏中选择“运行”>“从文件导入测试”并导入 test-result.pb,在 Android Studio 中检查这些结果。
FAILURE:构建失败并出现异常。
有失败的测试。查看报告:file:///home/circleci/code/app/build/reports/androidTests/connected/index.html
使用 --stacktrace 选项运行以获取堆栈跟踪。 使用 --info 或 --debug 选项运行以获得更多日志输出。 使用 --scan 运行以获得完整的见解。
12秒内构建失败 74 个可操作的任务:1 个已执行,73 个是最新的
<-------------> 0% 等待> IDLEMax 尝试次数达到 (2)
退出,代码退出状态 1
在与 Circleci 无关的模拟器上运行测试时看到类似的错误。这是由于缺乏存储空间。释放一些内存并重试修复它。
在新计算机上安装 android studio 并在我之前用来运行测试的连接设备上运行仪器测试后遇到了同样的问题:
> Task :sdk-android:connectedDebugAndroidTest FAILED
Unknown platform error occurred when running the UTP test suite. Please check logs for details.
然后再次尝试通过命令行使用 --debug 选项运行这些测试,提供有关问题的更多详细信息:
./gradlew -Pandroid.testInstrumentationRunnerArguments.class=<MY_PACKAGE>.UnitTestSuite --debug
日志:
Caused by: com.google.testing.platform.core.error.UtpException: ErrorName: INSTALL_FAILED_UPDATE_INCOMPATIBLE
….
2023-02-14T16:32:41.454+0100 [ERROR] [org.gradle.api.Task] Unknown platform error occurred when running the UTP test suite. Please check logs for details.
2023-02-14T16:32:41.455+0100 [QUIET] [org.gradle.api.Task]
所以就我而言,这只是 adb 无法更新测试应用程序的问题。只需将其从设备中删除,它就对我有用了!
您是否尝试过更新您的 IDE?对我来说这看起来像是一个错误
对于我们来说,CI 服务器有足够的剩余空间,但我们仍然遇到了
Unknown platform error occurred when running the UTP test suite.
错误。我发现在我们的服务器上启动模拟器时使用 -wipe-data
选项解决了这个问题。根据文档,使用 -wipe-data
选项删除了重新启动时保留的应用程序状态,并释放了运行测试所需的内存。
虚拟设备在重新启动时将应用程序及其状态数据保留在用户数据磁盘分区 (userdata-qemu.img) 中。例如,要清除此数据,请使用 -wipe-data 选项启动模拟器或擦除 AVD 管理器中的数据。有关用户数据分区和其他存储的更多信息,请参阅以下部分。
完整的示例命令是:
emulator @AVD_NAME -wipe-data
。
问题可能出在两件事上。首先是验证 Android 依赖项是否正确实现(androidTestImplementation 和 testImplementation 之间存在差异)以及文件夹是否正确实现。在Android中,有两个文件夹,androidTest和test。我认为你应该选择测试。
就我而言,解决问题的方法是升级:
'com.android.tools.build:gradle:8.0.0'
->
'com.android.tools.build:gradle:8.4.2'
和
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip
->
distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip