在检测单元测试中模拟方法
Mock the method with in instrumented unit test
我是运行 Expresso 测试人员,我有模拟以上下文为参数的方法的要求。此代码位于片段启动的 onStart()
中。由于我是 运行 模拟器中的测试用例,因此我必须在启动片段之前将方法 isBLESupported
模拟为 return 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");
}
这是我在启动片段之前模拟方法的方法。但是我看到测试用例正在执行真实的代码,而 mock 不工作。
@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 测试用例一起使用。
可能是因为您在 onStart 中创建了 BreatheMapperUtils
的新实例。模拟仅对您在设置方法中使用的实例有效。
我是运行 Expresso 测试人员,我有模拟以上下文为参数的方法的要求。此代码位于片段启动的 onStart()
中。由于我是 运行 模拟器中的测试用例,因此我必须在启动片段之前将方法 isBLESupported
模拟为 return 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");
}
这是我在启动片段之前模拟方法的方法。但是我看到测试用例正在执行真实的代码,而 mock 不工作。
@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 测试用例一起使用。
可能是因为您在 onStart 中创建了 BreatheMapperUtils
的新实例。模拟仅对您在设置方法中使用的实例有效。