Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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
Android 什么';从类方法获取单元测试意图信息的方法是什么?_Android_Unit Testing_Junit_Mockito - Fatal编程技术网

Android 什么';从类方法获取单元测试意图信息的方法是什么?

Android 什么';从类方法获取单元测试意图信息的方法是什么?,android,unit-testing,junit,mockito,Android,Unit Testing,Junit,Mockito,我刚开始为Android代码编写单元测试,就被卡住了 为这段代码编写测试: Intent intent = new Intent(context, Some.class); intent.setAction(Some.SYNC_SERVICE_ACTION_SYNC); context.startService(intent); 我想知道,如果调用了相同的intent,如何使用mockito获得intent操作来测试类以进行比较 在测试中,我尝试这样做: String action = "Sy

我刚开始为Android代码编写单元测试,就被卡住了

为这段代码编写测试:

Intent intent = new Intent(context, Some.class);
intent.setAction(Some.SYNC_SERVICE_ACTION_SYNC);
context.startService(intent);
我想知道,如果调用了相同的intent,如何使用mockito获得intent操作来测试类以进行比较

在测试中,我尝试这样做:

String action = "SyncService.SYNC_SERVICE_ACTION_SYNC";
when(context.startService(any())).thenReturn(Intent);
assertEquals("Do not match", action, Intent.getAction());

也许有人能帮忙

我找到了我的问题的答案,为了从mockito测试中获得关于你的课堂意图的信息,你应该这样做:

ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
doReturn(null).when(context.startService(any()));
verify(context).startService(captor.capture());

String intentAction = captor.getValue().getAction();
而是使用:

when(context.startService(any())).thenReturn(null);

我找到了我的问题的答案,为了从mockito测试中获得关于课堂意图的信息,您应该做如下操作:

ArgumentCaptor<Intent> captor = ArgumentCaptor.forClass(Intent.class);
doReturn(null).when(context.startService(any()));
verify(context).startService(captor.capture());

String intentAction = captor.getValue().getAction();
而是使用:

when(context.startService(any())).thenReturn(null);

A) 您应该更喜欢when/thenReturn(请参见为什么)和B)当使用doReturn时,它是这样的:
doReturn(x)。when(mock).foo()
-您只将mock对象放入
when()
。除此之外:模拟对象的默认值是返回null。告诉莫基托那样做是没有意义的。您只在需要返回null以外的其他内容时才告诉它@GhostCat感谢您的评论,在阅读了关于这些不同存根的简单解释之后,我的理解更加清晰了。A)您应该更喜欢when/thenReturn(参见原因)和B)当使用doReturn时,它是这样的:
doReturn(x)。when(mock).foo()
-您只将模拟对象放入
when()
。除此之外:模拟对象的默认值是返回null。告诉莫基托那样做是没有意义的。您只在需要返回null以外的其他内容时才告诉它@GhostCat感谢您的评论,在阅读了关于这些不同存根的简单解释之后,我的理解更加清晰了。