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