Espresso单元测试在AWS Device Farm上失败,但在本地运行

时间:2019-11-18 13:03:51

标签: android continuous-integration android-espresso android-testing aws-device-farm

我有一个Espresso单元测试,可以在我的机器上本地正常运行。该测试使用ActivityTestRule,并通过Koin模拟和提供了一系列依赖关系。依赖项注入是通过@Before方法完成的。

测试成功通过,在我的本地设备和仿真器上没有任何问题。 AWS Device Farm上的相同测试失败。它会尝试初始化我的FirebaseMessagingService,这甚至不是测试的一部分。我正在尝试在此处创建手动运行。我已确认我上载了正确的原始debug APK和androidTest APK。我还在设备场上尝试过Test Filter来运行特定的测试类。它执行@Before@After,但是在原始测试期间失败,因为它无法在该Firebase服务中找到某些依赖关系,这很奇怪,因为该类在测试中没有作用。

1 个答案:

答案 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