一.Android單元測試 Mockito的簡單用法
二.Android單元測試 Mockito的更多用法(1)
四.Android單元測試 PowerMock mock靜態方法
在這裏isWaitingOther是一個私有變量,默認值是false,那麼我們要測試isWaitingOther == true時的分支要怎麼做呢?
在這裏我們可以使用Whitebox.setInternalState()來給一個對象的私有變量賦值,讓我們的測試能夠進行下去.
另外需要注意的是,這裏使用的Runner是PowerMockRunner.class,即在測試類名前加上@RunWith(PowerMockRunner.class)
@RunWith(PowerMockRunner.class)
public class MeetingPresenterTest {
private boolean isWaitingOther = false;
@Subscribe(threadMode = ThreadMode.MAIN)
public void onMeetingSourceChangedEvent(MediaSourceChangedEvent event) {
if (!meetingController.isStartedConferenceMedia() && isWaitingOther) {
isWaitingOther = false;
meetingController.requestStartConferenceMedia();
}
}
}
@Test
public void should_on_meeting_source_changed_event() throws Exception {
Whitebox.setInternalState(meetingPresenter, "isWaitingOther", true);
when(meetingController.isStartedConferenceMedia()).thenReturn(false);
meetingPresenter.onMeetingSourceChangedEvent(new MeetingEvent.MediaSourceChangedEvent(null));
verify(meetingController).requestStartConferenceMedia();
}