【问题标题】:Local unit testing with Mockito in Android studio在 Android Studio 中使用 Mockito 进行本地单元测试
【发布时间】:2017-08-27 11:45:35
【问题描述】:

有人可以向我展示一个使用 mockito 的代码的工作单元测试吗?我刚开始在 Android Studio 中进行测试,确实需要一些帮助。

public class PreferenceHelper {

public static final String SHARED_PREFS_NAME = "EDUBACK_PREFS";
public static final String PREF_KEY_IS_STUDENT = "PREF_KEY_IS_STUDENT";
private final SharedPreferences mPref;

public PreferenceHelper(Context context) {
    mPref = context.getSharedPreferences(SHARED_PREFS_NAME, Context.MODE_PRIVATE);
}


public void setIsStudent(boolean isStudent) {
    mPref.edit().putBoolean(PREF_KEY_IS_STUDENT, isStudent).apply();
}


public boolean getIsStudent() {
    return mPref.getBoolean(PREF_KEY_IS_STUDENT, true); // Default true
}}

【问题讨论】:

  • 你想测试什么? PreferenceHelper 类?或者你想在其他类中使用 PreferenceHelper 时模拟它?
  • 我要测试 PreferenceHelper 类

标签: android unit-testing mockito


【解决方案1】:

其实这里没有必要使用mockito。

你可以像这样测试你的类(对于我使用org.assertj:assertj-core:3.5.2库的断言):

@RunWith(RobolectricTestRunner.class)
public class PreferenceHelperTest {
    private SharedPreferences sharedPreferences;
    private PreferenceHelper preferenceHelper;

    @Before
    public void setUp() {
        sharedPreferences = RuntimeEnvironment.application.getSharedPreferences(SHARED_PREFS_NAME, Context.MODE_PRIVATE);
        preferenceHelper = new PreferenceHelper(ShadowApplication.getInstance().getApplicationContext());
    }

    @Test
    public void setIsStudent_whenIsStudentIsTrue() {
        preferenceHelper.setIsStudent(true);
        assertThat(sharedPreferences.getBoolean(PREF_KEY_IS_STUDENT, false)).isTrue();
    }

    @Test
    public void setIsStudent_whenIsStudentIsFalse() {
        preferenceHelper.setIsStudent(false);
        assertThat(sharedPreferences.getBoolean(PREF_KEY_IS_STUDENT, true)).isFalse();
    }

    @Test
    public void getIsStudent_whenIsStudentIsNull() {
        boolean getIsStudent = preferenceHelper.getIsStudent();
        assertThat(getIsStudent).isTrue();
    }

    @Test
    public void getIsStudent_whenIsStudentIsFalse() {
        preferenceHelper.setIsStudent(false);
        boolean getIsStudent = preferenceHelper.getIsStudent();
        assertThat(getIsStudent).isFalse();
    }

    @Test
    public void getIsStudent_whenIsStudentIsTrue() {
        preferenceHelper.setIsStudent(true);
        boolean getIsStudent = preferenceHelper.getIsStudent();
        assertThat(getIsStudent).isTrue();
    }
}

【讨论】:

    猜你喜欢
    • 2020-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-15
    • 1970-01-01
    相关资源
    最近更新 更多