首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >测试ListPreference

测试ListPreference
EN

Stack Overflow用户
提问于 2018-11-13 21:30:52
回答 1查看 364关注 0票数 1

我正在尝试测试android的偏好,但我对如何实现这个结果感到有点困惑。

这是我的偏好

代码语言:javascript
复制
<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实际上是更改的。

现在,代码可以工作了,我只是在测试部分阻塞。

以下是我的部分活动:

代码语言:javascript
复制
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);
        }
    }
}

问题是我有一个经典的“如果目标视图不是视图层次结构的一部分”的错误。

欢迎任何帮助。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2019-05-30 14:36:11

代码语言:javascript
复制
@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());
 }

希望这能对你有所帮助。将您的共享首选项放在单击操作下

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53282141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档