【发布时间】:2019-04-27 14:52:18
【问题描述】:
我正在尝试对我正在构建的 Android 应用进行测试。其中一项测试涉及我编写的连接到 Google Firestore 的交互器文件 (DatabaseInteractor.java)。默认构造函数将FirestoreFirebase 对象设置为FirebaseFirestore.getInstance();。
我正在使用 Mockito 和 JUnit 进行单元测试。当我尝试在单元测试中创建 DataBaseInteractor 对象时,出现以下错误:
java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process null. Make sure to call FirebaseApp.initializeApp(Context) first.
显然,在我的单元测试中调用默认构造函数时会发生此错误。我不确定为什么会这样。我能够在我的 android 应用程序的其他部分创建一个 DataBaseInteractor 对象而不会出现问题。我可以在何时何地初始化使用FireBaseFireStore 对象的类可能存在限制?如果我想模拟 FireBase 的行为进行单元测试,我该如何绕过这些限制?
编辑:我的DataBaseInteractor.java 文件的截断版本:
public class DatabaseInteractor {
private static User theUser;
private FirebaseFirestore db;
private DocumentReference userData;
public DatabaseInteractor() {
db = FirebaseFirestore.getInstance();
theUser = new User();
}
// ... various methods that add/retrieve Users from FireStore ... //
}
【问题讨论】:
-
发布您的 DatabaseInteractor.java 文件,您可能需要模拟 Firestore 实例
-
发布了我的 DataBaseInteractor 文件!
标签: android firebase unit-testing mockito google-cloud-firestore