小编Chr*_*s T的帖子

使用 Mockito 和 Firebase 进行单元测试

我正在尝试对我正在构建的 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

7
推荐指数
1
解决办法
6463
查看次数

我实施Verhulst公式有什么不对吗?

我被分配了一个程序来获取输入并输出一个表格来计算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)

c++ math equations

5
推荐指数
1
解决办法
436
查看次数

正确理解 waitpid() 和 getpid()

我正在我的系统编程课程中学习forks,execl以及父进程和子进程。令我困惑的一件事是waitpid()getpid()。有人可以确认或更正我对这两个功能的理解吗?

getpid()将返回调用它的任何进程的进程 ID。如果父级调用它,则返回父级的 pid。对孩子也一样。(pid_t根据联机帮助页,它实际上返回一个 type 值)。

waitpid()似乎更复杂。我知道如果我在父进程中使用它,没有任何标志来防止它阻塞(使用WNOHANG),它将停止父进程,直到子进程终止。waitpid()然而,我有点不确定如何管理这一切。waitpid()也返回pid_tpid_t waitpid()回报的价值是多少?根据父进程或子进程是否调用它,以及子进程是否仍在运行或已终止,这种情况如何变化?

c unix pid waitpid

4
推荐指数
1
解决办法
2136
查看次数

在OCaml中使用Map.update

我试图更改我在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)

我的语法或我的论点是不正确的?

ocaml dictionary

2
推荐指数
1
解决办法
502
查看次数