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

Android 测试-FirebaseApp在此过程中未初始化,android,firebase,firebase-realtime-database,automated-tests,robolectric,Android,Firebase,Firebase Realtime Database,Automated Tests,Robolectric,我正在尝试使用Robolectric进行测试,它与Firebase集成。我有一个项目MyProject-Test,我将使用它在数据库的真实实例中运行测试 问题是,在测试前运行清理时,我有一个错误: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process null. Make sure to call FirebaseApp.initializeApp(Context) firs

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

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

java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process null. Make sure to call FirebaseApp.initializeApp(Context) first.

at com.google.firebase.FirebaseApp.getInstance(Unknown Source)
at com.google.firebase.database.FirebaseDatabase.getInstance(Unknown Source)
at com.cgbros.silkhub.activity.listener.LoginActivityUnitTest.cleanUp(LoginActivityUnitTest.kt:26) <28 internal calls>
java.lang.IllegalStateException:此进程中未初始化默认FirebaseApp null。确保首先调用FirebaseApp.initializeApp(上下文)。
位于com.google.firebase.FirebaseApp.getInstance(未知源)
位于com.google.firebase.database.FirebaseDatabase.getInstance(未知源)
在com.cgbros.silkhub.activity.listener.LoginActivityUnitTest.cleanUp上(LoginActivityUnitTest.kt:26)
测试文件: (我试图复制粘贴源代码到这里。失败惨重…)

关于我如何才能做到这一点,有什么见解吗


谢谢大家!

几天前我也遇到了同样的问题,我用错误所说的同样方法解决了它。您之所以会出现此错误,是因为您试图在不初始化的情况下获取
Firebase
的实例。在尝试获取Firebase实例之前,请添加这行代码,如下所示:

FirebaseApp.initializeApp(this);
另外,正如Franks所说,请确保在
build.gradle
文件中添加了以下代码行,
作为整个文件的最后一行

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

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

所以,我要做的是找到一种与FirebaseDatabase交互的方法。我想我可以使用
firebase admin
,或者使用这个:


谢谢你抽出时间来帮助我

**更新**

我选择使用Firebase REST API


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

我也面临上述问题。由nuget进行所有插件下载和检查。但最终,我发现崩溃的原因是,应用程序包名称与Google Dev中指定的名称不匹配。
添加此行后,应用程序包名称必须与在Google开发控制台中分配的名称匹配,然后出现错误

FirebaseApp.initializeApp(本)

那你也得这么做

将此行添加到Gradle(应用程序) 应用插件:“com.google.gms.googleservices”

将此行添加到Gradle(项目) classpath'com.google.gms:googleservices:3.2.1'


还要检查是否缺少依赖项,并确保添加了google服务。json我遇到了相同的问题,并通过在单元测试的前一步初始化Firebase修复了它:

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

我上次吃这个的时候(今天早上早些时候)我忘了在我的应用程序的
build.gradle
末尾添加
apply plugin:'com.google.gms.google services'
。另外,请看一下之前关于这个错误的一些问题:谢谢你的回答。我面临的问题是,我想在我的测试类中初始化Firebase,这样我就可以填充并清理它。所以,我不能只用“这个”因为它不是上下文实例。这就是发生这种情况的原因。如果没有上下文实例,则无法实例化Firebase。在这种情况下,请使用上下文参数在TestClass中创建一个方法。然后只需使用上下文实例作为参数从ActivityClass调用该方法。这肯定会起作用。感谢您使用是时候帮助我了(我想我只是试图用错误的方式使用FielBaseSDK,我想我应该使用REST API来填充数据库并清理它。谢谢!你可以用上面提到的或者用最简单的方式使用REST API来实现你所要求的。因此,如果你仍然认为我的答案对你有帮助,请考虑接受它并给予支持。g投票。谢谢!谢谢!对我不起作用