最近我在我的 Firebase Android 应用程序中添加了一些 Espresso 测试,因此在模拟器上运行它们的总时间增长到大约 8 分钟。
现在,每当我尝试在 Firebase 测试实验室中运行我们的 Espresso 测试时,该应用程序总是由于各种原因被 Android 操作系统杀死。例子:
在 Nexus 5 模拟器上运行,API 23:测试开始后约 6 分钟,
com.google.android.gms
获取更新并终止正在进行的测试:D/PackageManager(1678): Renaming /data/app/vmdl517737698.tmp to /data/app/com.google.android.gms-2 I/ActivityManager(1678): Force stopping com.google.android.gms appid=10008 user=-1: replace sys pkg I/ActivityManager(1678): Killing 1970:com.google.android.gms.persistent/u0a8 (adj 1): stop com.google.android.gms W/PackageManager(1678): Trying to update system app code path from /data/app/com.google.android.gms-1 to /data/app/com.google.android.gms-2 <...> I/ActivityManager(1678): Killing 5654:org.example.MyApplication/u0a84 (adj 0): stop com.google.android.gms
很惊讶,我尝试在 Nexus 5 模拟器 API 19 上运行(我的 minSdkVersion 为 15):测试开始后大约 20 秒(!),出现了一条关于某些 Chimera API 的奇怪消息,并杀死了我的“更新配置”:
E/ModuleProvider(4927): Unhandled query from org.example.MyApplication: content://com.google.android.gms.chimera/api/ I/ChimeraModuleLdr(5546): Module config changed, forcing restart due to module I/Process(5546): Sending signal. PID: 5546 SIG: 9
当然,Firebase 测试实验室会立即注意到进程被终止,并通过将测试标记为“失败”来做出响应,原因是:Process crashed
.
我的问题是:如何在 Firebase 测试实验室中处理 Android 操作系统的这种行为?创建一个 junit重试 @Rule并没有帮助 - 整个过程都被杀死,没有留下任何重试的机会。