我正在尝试测试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);
}
}
}问题是我有一个经典的“如果目标视图不是视图层次结构的一部分”的错误。
欢迎任何帮助。谢谢!
发布于 2019-05-30 14:36:11
@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());
}希望这能对你有所帮助。将您的共享首选项放在单击操作下
https://stackoverflow.com/questions/53282141
复制相似问题