测试 - 此过程中未初始化FirebaseApp

时间:2017-11-12 21:03:01

标签: android firebase firebase-realtime-database automated-tests robolectric

我正在尝试使用Robolectric进行测试,并且它与Firebase集成。我有一个项目MyProject - 我将用于在数据库的实际实例中运行测试。

问题是,在测试之前运行清理时,我有错误:

 while (c != ' ' && c != '\n' && c != '\t')

测试文件: https://gist.github.com/augustoerico/e88d3e5b59ae5d023d83c114b8ffa708 (我试图在这里复制粘贴源。失败了......)

有关如何使其发挥作用的任何见解?

谢谢!

5 个答案:

答案 0 :(得分:2)

前几天我也遇到了同样的问题,我以错误的方式解决了这个问题。您收到该错误是因为您尝试获取Firebase的实例而未初始化它。在尝试获取Firebase实例之前,请先添加以下代码:

FirebaseApp.initializeApp(this);

此外,正如Franks所说,请确保在整个文件的build.gradle文件as the last line中添加了以下代码。

apply plugin: 'com.google.gms.google-services'

答案 1 :(得分:2)

我遇到了同样的问题,并通过在单元测试的前一步中初始化Firebase来解决了这个问题:

FirebaseApp.initializeApp(InstrumentationRegistry.getInstrumentation().targetContext)

答案 2 :(得分:1)

好的,我已经弄明白了。这实际上是一个概念问题。问题是我尝试使用Firebase Android SDK在Android上下文之外运行测试。我的意思是,我的测试不是Android应用程序,我尝试使用Android SDK。所有FirebaseApp.initializeApp()都需要Context作为参数。

所以,我要做的是找到一种与FirebaseDatabase交互的方法。我想我可以使用firebase-admin,也可以使用这个:https://github.com/bane73/firebase4j

感谢您抽出宝贵时间帮助我(

**更新**

我已选择使用Firebase REST API https://firebase.google.com/docs/reference/rest/database/

为了将来参考,我通过调整规则来提供公共完全访问权限,因此编写测试设置和清理更容易。

答案 3 :(得分:0)

我也遇到了上述问题。通过nuget完成所有插件下载和检查。但最后,我发现崩溃是由于,应用程序包名称与Google Dev中分配的名称不匹配。 应用程序包名称必须与Google Dev中指定的名称相匹配。控制台

答案 4 :(得分:0)

添加此行后,您会收到错误消息

FirebaseApp.initializeApp(this);

然后您还必须这样做

将此行添加到Gradle(App)

应用插件:“ com.google.gms.google-services”

将此行添加到Gradle(项目)

classpath'com.google.gms:google-services:3.2.1'

还要检查是否没有依赖关系缺失,并确保添加google-services.json