三.Android單元測試 PowerMock給私有變量賦值

一.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();
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章