【发布时间】:2017-08-08 19:35:10
【问题描述】:
我正在尝试学习 Mockito 和 TDD。
我有方法的演示者:
@Override
public void startScanning() {
if (isLocationPermissionGranted() && isBluetoothEnabled()) {
mPresenterView.onStartScanBtnClick();
} else if (!isBluetoothEnabled()) {
mPresenterView.displayDialogRequestingBluetooth();
} else if (!isLocationPermissionGranted()) {
mPresenterView.displayDialogRequestingPermission();
}
}
@Override
public boolean isLocationPermissionGranted() {
return false;
}
@Override
public boolean isBluetoothEnabled() {
return false;
}
问题是我如何使用 Mockito Roboelectric 或 w/e 在底部测试 2 种方法。
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mScanningPresenter = new ScanningPresenter(mView);
mockBluetoothAdapter = PowerMockito.mock(BluetoothAdapter.class);
}
@Test
public void shouldPassPowerMock() {
assertEquals(true, mockBluetoothAdapter != null);
}
@Test
public void shouldDisplayBluetoothRequestWhenDisabled() {
mScanningPresenter.startScanning();
PowerMockito.when(!mockBluetoothAdapter.isEnabled()).thenReturn(false);
verify(mView).displayDialogRequestingBluetooth();
}
我添加了 PowerMock 并创建了测试以确保它正常工作 ^^ 我正在添加测试以显示我想要做什么但还不知道如何做
我的想法是让这个接口方法成为presenter中的受保护方法并创建MockingClass。或者创建单独的界面助手并模拟它。
我对任何干净的解决方案/提议持开放态度。
【问题讨论】:
标签: java android mockito robolectric powermockito