Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用多个then-in-test Android的示例_Android_Unit Testing_Mockito - Fatal编程技术网

使用多个then-in-test Android的示例

使用多个then-in-test Android的示例,android,unit-testing,mockito,Android,Unit Testing,Mockito,在学习android测试时,我发现我可以多次使用“then”。但我不明白在哪些情况下这可能会有帮助。比如说 when(mockObject.add(any())) .thenReturn(true,false) .thenThrow(new IllegalArgumentException()); 这实际上定义了在连续调用时发生的情况。第一次返回,下一次抛出。我不喜欢这种行为,我认为它可以更明确地指定返回中的更改,并且尽可能接近调用,但有时调用会深入堆栈,这是不可避免的 所以基本上当…then

在学习android测试时,我发现我可以多次使用“then”。但我不明白在哪些情况下这可能会有帮助。比如说

when(mockObject.add(any()))
.thenReturn(true,false)
.thenThrow(new IllegalArgumentException());

这实际上定义了在连续调用时发生的情况。第一次返回,下一次抛出。我不喜欢这种行为,我认为它可以更明确地指定返回中的更改,并且尽可能接近调用,但有时调用会深入堆栈,这是不可避免的


所以基本上当…thenReturntrue.thenReturnfalse将在第一次返回true,然后返回false。这与当…然后返回True,false时相同

但为什么他在得到结果后抛出异常?我怎么知道?这取决于他在测试什么。也许他在模拟一个数据流,只有两个元素。这可能是正确行为的原因有数百个,或者只是试图理解流程。在第一步添加任何数据后,他如何检索三个不同的结果?真/假/例外?方法的结果是一。或者它是一个异常,但异常并没有发生,然后它作为第一个结果发生。对吧?一切都井然有序。第一次调用时,它返回true。第二,错误。第三,它抛出了一个exceptionOk,所以请确认我理解正确,它进行了3次迭代,并分别检查了3个场景?像这样当->比真/当->比假/当->比异常?