我正在尝试对我正在构建的 android 应用程序进行测试。其中一项测试涉及我编写的一个交互器文件 ( DatabaseInteractor.java),它连接到 Google Firestore。默认构造函数将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 …Run Code Online (Sandbox Code Playgroud) android unit-testing mockito firebase google-cloud-firestore
我被分配了一个程序来获取输入并输出一个表格来计算Verhulst公式的k年数.我用这个等式:
http://www.resnet.wm.edu/~jxshix/math410/Verhulst.html
等式如下:
p(n + 1)=(1 + gh)p(n)-gp(n)^ 2/M.
这是我制作的节目.我已经删除了我的代码请求输入的部分,因为我觉得你们筛选的过程会很乏味:
> #include <iostream>
using namespace std;
int main() {
int k = 20; // number of years to calculate for
int pn = 10; // the population of animals for the first year
double g = 275; // rate of growth
g = g/100.00;
double h = 20; // rate of animal death/animals leaving population
h = h/100.00;
int M = 100; // carrying capacity of the ecosystem …Run Code Online (Sandbox Code Playgroud) 我正在我的系统编程课程中学习forks,execl以及父进程和子进程。令我困惑的一件事是waitpid()和getpid()。有人可以确认或更正我对这两个功能的理解吗?
getpid()将返回调用它的任何进程的进程 ID。如果父级调用它,则返回父级的 pid。对孩子也一样。(pid_t根据联机帮助页,它实际上返回一个 type 值)。
waitpid()似乎更复杂。我知道如果我在父进程中使用它,没有任何标志来防止它阻塞(使用WNOHANG),它将停止父进程,直到子进程终止。waitpid()然而,我有点不确定如何管理这一切。waitpid()也返回pid_t。pid_t waitpid()回报的价值是多少?根据父进程或子进程是否调用它,以及子进程是否仍在运行或已终止,这种情况如何变化?
我试图更改我在OCaml中制作的地图中的键的值:
module TestMap = Map.Make(String);;
let m = TestMap.empty;;
let m = TestMap.add "Chris" 1 m ;;
let m = TestMap.add "Julie" 4 m;;
Run Code Online (Sandbox Code Playgroud)
这会编译文件,但是当我尝试使用以下命令更新key的值时Julie:
let m = TestMap.update "Julie" 10 m;;
Run Code Online (Sandbox Code Playgroud)
我从编译器得到一个错误:
Error: This expression has type int but an expression was expected of type
'a option -> 'a option
Run Code Online (Sandbox Code Playgroud)
我猜我可能错误地使用了这个功能.我发现Map.update的文档很难理解:
val update : key -> ('a option -> 'a option) -> 'a t -> 'a t
Run Code Online (Sandbox Code Playgroud)
我的语法或我的论点是不正确的?