Android單元測試之三:使用模擬框架模擬依賴
基本描述
如果是一些工具類方法的測試,如計算兩數之和的方法,本地 JVM 虛擬機就能提供足夠的運行環境,但如果要測試的單元依賴了 Android 框架,比如用到了 Android 中的 Context 類的一些方法,本地 JVM 將無法提供這樣的環境,這時候模擬框架 Mockito 就派上用場了。
使用
引入框架
testImplementation 'org.mockito:mockito-core:2.19.0'
測試類
package com.zm.androidUnitTest;
import android.content.Context;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.when;
/**
* Created by zhangmiao on 2019/2/24.
*/
@RunWith(MockitoJUnitRunner.class)
public class MockUnitTest {
private static final String FAKE_STRING = "AndroidUnitTest";
@Mock
Context mMockContext;
@Test
public void readStringFromContext_LocalizedString() {
when(mMockContext.getString(R.string.app_name)).thenReturn(FAKE_STRING);
assertThat(mMockContext.getString(R.string.app_name),is(FAKE_STRING));
when(mMockContext.getPackageName()).thenReturn("com.jdqm.androidunittest");
System.out.println(mMockContext.getPackageName());
}
}