Android 测试-FirebaseApp在此过程中未初始化
我正在尝试使用Robolectric进行测试,它与Firebase集成。我有一个项目MyProject-Test,我将使用它在数据库的真实实例中运行测试 问题是,在测试前运行清理时,我有一个错误: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
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投票。谢谢!谢谢!对我不起作用