我正在运行Expresso测试,我需要以上下文作为参数模拟该方法。该代码在片段启动的onStart()
中。由于我在模拟器中运行了测试柜,因此我必须模拟该方法isBLESupported
在启动片段之前返回true。下面的代码用onStart
方法编写。
BreatheMapperUtils utils = new BreatheMapperUtils();
if (utils.isBLESupported(getActivity())) {
startSyncProcess();
} else {
//TODO does not run on emulator
showNotificationAlert(getString(R.string.ERROR), getString(R.string.BLE_NOT_SUPPORTED), "Ok");
}
这是我在启动片段之前模拟该方法的方法。但是我看到测试用例正在执行真实代码,模拟不起作用。
@Before
public void setup() {
mContext = mActivityTestRule.getActivity();
BreatheMapperUtils utils = mock(BreatheMapperUtils.class);
when(utils.isBLESupported(mContext)).thenReturn(true);
// launch the fragment
}
但模拟仍然没有成功。如果您有任何想法,请提供帮助。是否可以使用上下文模拟该方法?我已经阅读了一些文档,它说我们不能使用Expresso Test案例使用Power Mockito。
可能是因为您在ONSTART中创建了BreatheMapperUtils
的新实例。模拟只有在您在设置方法中使用的实例才有效。