gpt4 book ai didi

Expresso 的 Android 测试首选项 fragment

转载 作者:搜寻专家 更新时间:2023-11-01 07:48:45 24 4
gpt4 key购买 nike

我在使用 Expresso 测试我的代码时遇到了问题。我写了这段代码:

public class SettingsActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

getFragmentManager().beginTransaction()
.replace(android.R.id.content, new SettingsFragment())
.commit();
}


public class SettingsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

addPreferencesFromResource(R.xml.preferences);
}

XML:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/preferences_xml">
<PreferenceCategory
android:title="@string/application_settings"
android:id="@+id/application_settings_preferences">

<CheckBoxPreference
android:key="@string/key_processing_private_data_preference"
android:title="@string/title_processing_private_data_preference"
android:summary="@string/summary_processing_private_data_preference"
android:defaultValue="true"
android:dependency="@string/key_recording_audio_preference"
android:id="@+id/private_data_check_box_preference"/>
</PreferenceCategory>

<PreferenceCategory
android:title="@string/device_settings"
android:id="@+id/device_settings_preferences">

<CheckBoxPreference
android:key="@string/key_recording_audio_preference"
android:title="@string/title_recording_audio_preference"
android:summary="@string/summary_recording_audio_preference"
android:defaultValue="true"
android:id="@+id/recording_audio_check_box_preference"/>

</PreferenceCategory>
</PreferenceScreen>

我的测试规则:

@Rule
public ActivityTestRule<SettingsActivity> mActivityRule = new ActivityTestRule<>(
SettingsActivity.class);

我先尝试测试复选框:

onData(anything())
.inAdapterView(allOf(
isDescendantOfA(withId(R.id.preferences_xml)),
withId(R.id.application_settings_preferences)))
.atPosition(1)
.check(matches(isDisplayed()));

测试总是失败并出现 NoMatchingViewException:在层次结构中找不到匹配的 View :

http://prntscr.com/bv8xlb

我也试试:

String workingInBackgroundSummary = mActivityRule.getActivity().getBaseContext().getString(R.string.summary_working_in_background_preference);
onData(withSummaryText(workingInBackgroundSummary)).check(matches(isDisplayed()));

测试总是因 NullPointerException 而失败:

http://prntscr.com/bv8w04 .

onView(withId(R.id.working_in_background_check_box_preference)).check(matches(isDisplayed()));

也因 NoMatchingViewException 而失败。

有人会展示一个带有正确测试用例的例子吗?

最佳答案

(代表 OP 发布)

已解决:

onData(allOf(
is(instanceOf(Preference.class)),
withKey(key),
withSummary(R.string.summary_working_in_background_preference),
withTitle(R.string.title_working_in_background_preference)))
.onChildView(withText(title))
.check(matches(isCompletelyDisplayed()));

关于Expresso 的 Android 测试首选项 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38478692/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com