2

我正在运行 Expresso 测试,我需要以上下文作为参数来模拟该方法。此代码在onStart()片段启动中。由于我在模拟器中运行测试用例,因此我必须isBLESupported在启动片段之前模拟该方法以返回 true。下面的代码是用onStartmethod编写的。

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
}

但是 mock 仍然不成功。如果您有任何想法,请提供帮助。是否可以使用上下文模拟方法?我已经阅读了一些文档,它说我们不能将 Power Mockito 与 Expresso 测试用例一起使用。

4

1 回答 1

1

BreatheMapperUtils可能是因为您在 onStart 中创建了一个新实例。模拟仅对您在设置方法中使用的实例有效。

于 2018-12-19T07:54:29.343 回答