тестване на еспресо, използвано във фрагмент

Никога преди не съм използвал еспресо. Сега искам автоматично да въведа някакъв текст във фрагмента на полето editText. Знам само как да го направя с Activity.

@LargeTest
public class EspressoTest {


    @Rule
    public ActivityTestRule<CheckInActivity> mActivityRule =
            new ActivityTestRule<>(CheckInActivity.class);
    @Test
    public void testActivityShouldHaveText() throws InterruptedException {
        onView(withId(R.id.editText)).perform(clearText(), typeText("KI"));
    }
}

Имам MainFragment, хостван от MainActivity и editText е поставен в оформлението на MainFragment.

Освен това има ли начин в еспресото да щракне върху някакъв текст, за да може да намери изгледа по текст?


person Jenya Kyrmyza    schedule 12.10.2015    source източник


Отговори (3)


Освен това има ли начин в еспресото да щракне върху някакъв текст, за да може да намери изгледа по текст?

За да уловите изглед по неговия текст, можете да направите както в този пример:

onView(withString(R.string.editText)).check(matches(isDisplayed()));

За да хванете текст или само част от него, можете да използвате (мисля, че е възможно и в Robotium) Hamcrest matchers. Тук ще намерите вероятно всички съвпадения: Бърза справка за Hamcrest 1.3

За да стане по-ясно, ще ви дам няколко примера:

onView(withId(R.id.textView)).check(matches(withText(startsWith("Hello"))));

onView(withId(R.id.action_bar_main)).check(matches(withText(String.valueOf(contains("Hello")))));

onView(withId(R.id.textView)).check(matches(withText(endsWith("Hello"))));

Мисля, че това също би било полезно:

Как Откривам изглед, който съм създал програмно в еспресо

person piotrek1543    schedule 08.12.2015

Засега реших да използвам robotium, защото все още не знам как да го внедря с помощта на еспресо Robotium има такива методи като waitForFragment и waitForActivity

person Jenya Kyrmyza    schedule 13.10.2015

Ако искате да намерите изгледа по текст, можете да използвате onView(withText()).

Въпреки това може да се наложи да свържете няколко съвпадения, за да намерите точно това, което искате. allOf() ви позволява да правите точно това. Може също да се наложи да щракнете върху текстовото си поле, преди да можете да пишете.

onView(allOf(
    withId(R.id.editText),
    withText(R.string.edit_text)
)).perform(click(),
           clearText(),
           typeText("KI")
   );

Предпочитам да използвам replaceText() на повечето тестове, за да спестя време.

person James Pullar    schedule 09.11.2015