【发布时间】:2016-12-07 09:28:06
【问题描述】:
我在我们的 android 应用程序中使用 Firebase 进行远程配置。下面是在我的应用程序类 onCreate 方法中完成的初始化:
FirebaseRemoteConfig remoteConfig = FirebaseRemoteConfig.getInstance();
FirebaseRemoteConfigSettings settings = new FirebaseRemoteConfigSettings.Builder()
.setDeveloperModeEnabled(BuildConfig.DEBUG)
.build();
remoteConfig.setConfigSettings(settings);
setFirebaseDefault();
Map<String, Object> defaults = new HashMap<>();
defaults.put(FirebaseConstantsKt.BREAKING_NEWS, "");
defaults.put(FirebaseConstantsKt.ENABLE_BREAKING_NEWS, false);
FirebaseRemoteConfig.getInstance().setDefaults(defaults);
根据this 的回答,我的build.gradle 文件中还包含以下行:
apply plugin: 'com.google.gms.google-services'
当我运行应用程序时,它运行良好,但是当我尝试运行我的 Roboelectric 测试用例时,它崩溃并出现以下异常:
java.lang.IllegalStateException:名称为 [DEFAULT] 的 FirebaseApp 不存在。 在 com.google.firebase.FirebaseApp.getInstance(未知来源) 在 com.google.firebase.FirebaseApp.getInstance(未知来源) 在 com.google.firebase.remoteconfig.FirebaseRemoteConfig.getInstance(未知来源) 在 com.woi.apppackage.android.MyApplication.initFirebase(MyApplication.java:225) 在 com.woi.apppackage.android.MyApplication.onCreate(MyApplication.java:107) 在 org.robolectric.internal.ParallelUniverse.setUpApplicationState(ParallelUniverse.java:140) 在 org.robolectric.RobolectricTestRunner.setUpApplicationState(RobolectricTestRunner.java:433) 在 org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:240) 在 org.robolectric.RobolectricTestRunner.runChild(RobolectricTestRunner.java:188) 在 org.robolectric.RobolectricTestRunner.runChild(RobolectricTestRunner.java:54) 在 org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 在 org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 在 org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 在 org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 在 org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 在 org.robolectric.RobolectricTestRunner$1.evaluate(RobolectricTestRunner.java:152) 在 org.junit.runners.ParentRunner.run(ParentRunner.java:363) 在 org.junit.runner.JUnitCore.run(JUnitCore.java:137) 在 com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) 在 com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:234) 在 com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:74) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
该测试与 Firebase 无关。如果我注释掉 onCreate 中的 Firebase 代码,测试运行良好。我想我在 Firebase 的初始化中遗漏了一些东西
【问题讨论】:
标签: android firebase robolectric