1
Expresso로 코드를 테스트하는 데 문제가 있습니다. 이 코드를 썼다 :Android 테스팅 기본 설정 조각 by 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 실패 : 계층 구조에서보기 없음 D 매칭 :
그리고 또한 내가 시도 :
String workingInBackgroundSummary = mActivityRule.getActivity().getBaseContext().getString(R.string.summary_working_in_background_preference);
onData(withSummaryText(workingInBackgroundSummary)).check(matches(isDisplayed()));
테스트는 항상 NullPointerException이 실패 :
onView(withId(R.id.working_in_background_check_box_preference)).check(matches(isDisplayed()));
NoMatchingViewException도 실패합니다.
누군가가 정확한 테스트 사례를 보여 주겠습니까?