使用仪表单元测试模拟该方法



我正在运行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的新实例。模拟只有在您在设置方法中使用的实例才有效。

相关内容

  • 没有找到相关文章

最新更新