android - Espresso 单元测试在 AWS Device Farm 上失败,但在本地运行
问题描述
我有一个Espresso
单元测试,它在我的机器上本地运行良好。该测试使用并通过Koin 模拟ActivityTestRule
和提供了一堆依赖项。依赖注入是在方法中完成的。@Before
测试成功通过,在我的本地设备和模拟器上没有任何问题。同样的测试在AWS Device Farm
. 它试图初始化 myFirebaseMessagingService
这甚至不是测试的一部分。我正在尝试在那里创建手动运行。我已验证我正在上传正确的原始debug
APK 和androidTest
APK。我还尝试Test Filter
在 Device Farm 上运行特定的测试类。它在原始测试期间执行但失败@Before
,@After
因为它无法在该 Firebase 服务中找到某些依赖项,这很奇怪,因为该类在测试中没有作用。
解决方案
Firebase SDK 通过内容提供者(hack)自动初始化。Firebase SDK 需要安装 google play 服务,这些服务在 android 的 amazons fork 上是缺失的。您的代码应该准备好处理缺失的播放服务(通常),尤其是当您计划在亚马逊设备上运行时。
例如,按照Prevent auto initialization
教程中的步骤https://firebase.google.com/docs/cloud-messaging/android/client#prevent-auto-init
<meta-data
android:name="firebase_messaging_auto_init_enabled"
android:value="false" />
<meta-data
android:name="firebase_analytics_collection_enabled"
android:value="false" />
稍后从代码重新初始化 FCM:
FirebaseMessaging.getInstance().isAutoInitEnabled = true
推荐阅读
- perl - 如何使用 perl 获取最近创建的目录?
- python - 使用“as”导入时,Python 模块没有属性错误
- objective-c - 如何在 macOS 上取消转义反斜杠?
- c# - RabbitMQ 多个消费者在同一个进程中
- php - php mysql查询最后加引号
- performance - Cognos 中的条件格式和性能
- angular - 用于路由的 Angular 7 写作测试
- reporting-services - 添加“maxRequestLenght”参数会导致 SSRS 2016 中的内部服务器错误
- java - 当页面左右滚动时,如何在 Selenium 中捕获整个屏幕
- python - 有没有办法在使用 pyinstaller 创建 exe 后录制视频