2013年11月26日火曜日

Espresso で Preference をクリックさせる

Matcher 書かないとダメっぽかったです。
PreferenceMatcher が用意されていたので利用しました。
import static com.google.common.base.Preconditions.checkNotNull; ... public class EspressoTest extends ActivityInstrumentationTestCase2<MainPreferenceActivity> { public EspressoTest() { super(MainPreferenceActivity.class); } @Override public void setUp() throws Exception { super.setUp(); // Espresso will not launch our activity for us, we must launch it via // getActivity(). getActivity(); } // Preference のキーを指定して、対応するビューをクリックする public void testPreference() { onData(withPreferenceKey("pref-key")).perform(click()); } public static Matcher<Object> withPreferenceKey(final Matcher<Preference> preferenceMatcher) { checkNotNull(preferenceMatcher); return new BoundedMatcher<Object, Preference>(Preference.class) { @Override public void describeTo(Description description) { description.appendText("with preference key: "); preferenceMatcher.describeTo(description); } @Override protected boolean matchesSafely(Preference pref) { return preferenceMatcher.matches(pref); } }; } public static Matcher<Object> withPreferenceKey(String expectedText) { checkNotNull(expectedText); return withPreferenceKey(PreferenceMatchers.withKey(expectedText)); } }

応用で、Preference をクリック → なんかする → summary が適切な値になっていることをチェック public void testPreference() { // Preference をクリック onData(withPreferenceKey("pref-key")).perform(click()); // クリック先でごにょごにょ // summary が適切な値になっていることをチェック // summary の Id が android.R.id.summary であることを利用 onData(withPreferenceKey("pref-key")) .onChildView(withId(android.R.id.summary)) .check(matches(withText("correct summary value"))); }


0 件のコメント:

コメントを投稿