Android 什么';从类方法获取单元测试意图信息的方法是什么?
我刚开始为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
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感谢您的评论,在阅读了关于这些不同存根的简单解释之后,我的理解更加清晰了。