Тестирование ListPreference - PullRequest
       7

Тестирование ListPreference

0 голосов
/ 13 ноября 2018

Я пытаюсь протестировать настройки Android, и меня немного смущает вопрос о том, как этого добиться.

Вот мои предпочтения

<PreferenceScreen 
xmlns:android="http://schemas.android.com/apk/res/android">
<ListPreference
    android:id="@+id/numberListPreference"
    android:defaultValue="3"
    android:entries="@array/number_text"
    android:entryValues="@array/number_value"
    android:key="@string/pref_key"
    android:summary="@string/pref_summary"
    android:title="@string/pref_title" />
</PreferenceScreen>

Я хочу проверить, что когда я изменяю число в отображаемой ListPreference, SharedPreference действительно изменяется.

Прямо сейчас, код работает, я просто блокирую часть тестирования.

Вот часть моей деятельности:

public class SettingActivity extends AppCompatActivity implements
SharedPreferences.OnSharedPreferenceChangeListener {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getFragmentManager()
            .beginTransaction()
            .replace(android.R.id.content, new SettingsFragment())
            .commit();
    }

    public static class SettingsFragment extends PreferenceFragment {
        @Override
        public void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.preferences);
        }
    }
}

Проблема в том, что у меня есть классическая ошибка «Если целевое представление не является частью иерархии представления».

Любая помощь приветствуется. Спасибо!

1 Ответ

0 голосов
/ 30 мая 2019
@Test
    public void clickListPreference() throws Exception{

        // Check if it is displayed
        Context appContext = InstrumentationRegistry.getTargetContext();

        onData(allOf(
           is(instanceOf(Preference.class)),
           withKey(appContext.getResources().getString(R.string.pref_key))))
          .check(matches(isDisplayed()));

        // Check if click is working
        onData(allOf(
           is(instanceOf(Preference.class)),
           withKey(appContext.getResources().getString(R.string.pref_key))))           
          .onChildView(withText(appContext.getResources()
              .getString(R.string.pref_title))).perform(click());
 }

Надеюсь, это поможет вам ... Поместите ваши общие настройки в действие "click"

...