我有一个Espresso
单元测试,可以在我的机器上本地正常运行。该测试使用ActivityTestRule
,并通过Koin模拟和提供了一系列依赖关系。依赖项注入是通过@Before
方法完成的。
测试成功通过,在我的本地设备和仿真器上没有任何问题。 AWS Device Farm
上的相同测试失败。它会尝试初始化我的FirebaseMessagingService
,这甚至不是测试的一部分。我正在尝试在此处创建手动运行。我已确认我上载了正确的原始debug
APK和androidTest
APK。我还在设备场上尝试过Test Filter
来运行特定的测试类。它执行@Before
和@After
,但是在原始测试期间失败,因为它无法在该Firebase服务中找到某些依赖关系,这很奇怪,因为该类在测试中没有作用。
答案 0 :(得分:0)
Firebase SDK通过内容提供程序(黑客)自动初始化自身。 Firebase SDK需要安装Google Play服务,而android的Amazon fork中缺少这些服务。通常,您的代码应准备好处理缺少的播放服务,尤其是当您计划在亚马逊设备上运行时。
例如,遵循教程https://firebase.google.com/docs/cloud-messaging/android/client#prevent-auto-init中的Prevent auto initialization
步骤
<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