【发布时间】:2017-11-02 17:22:15
【问题描述】:
我有一个使用activityTestRule 的简单测试,它应该检查是否调用了被测活动的方法:
@Test
public void callLiveLocation() {
MapSettingsActivity spy = spy(activityRule.getActivity());
doNothing().when(spy).setLiveLocation();
onView(withId(R.id.btn_map_current_location)).perform(click());
verify(spy).setLiveLocation();
}
当我在调试模式下检查时,正在调用方法 setLiveLocation()。
但是,控制台告诉我:
需要但未调用:mapSettingsActivity.setLiveLocation(); -> 在 com.android.dx.mockito.InvocationHandlerAdapter.invoke(InvocationHandlerAdapter.java:53) 实际上,与此模拟的交互为零。
如何检查被测活动的方法是否被调用?
我对按钮单击使用 Android 的数据绑定,它会调用回调,而回调又会调用被测活动的方法。
注意:
方法是activity上的简单方法:
public void setLiveLocation() {
super.startLocationListener();
}
编辑:
我注意到创建间谍返回 null 的原因尚不清楚:
MapSettingsActivity spy = spy(activityRule.getActivity());
【问题讨论】:
-
setLiveLocation()是最终方法吗?这是哪个版本的 Mockito?对于 Espresso 测试,您需要使用 mockito android -
@DavidRawson 这不是最终方法,它是 mockito 版本 2.+。抱歉回复晚了。
-
您介意发布您的
build.gradle的androidTestCompile部分吗?
标签: android mockito android-espresso