Еспресо изпълнява клик

Опитах се да напиша просто тест, използвайки „еспресо“

@RunWith(AndroidJUnit4.class)
@LargeTest
public class EspressoTest {
    @Rule
    public ActivityRule<IntroActivity> mActivityRule = new ActivityRule(IntroActivity.class);

    public EspressoTest() {
        IdlingPolicies.setMasterPolicyTimeout(1000, TimeUnit.SECONDS);
    }

    @Test
    public void testShouldClickEmailButton() {
            onView(withText(R.string.in_email)).perform(click());
    }


}

но получих грешка:

PerformException: Error performing 'single click' on view 'with string from resource id: <2131099761>[in.email] value: Login With Email'.

Опитвам различни рамки за тестване и robotium е най-добрият за мен досега, но ако някой може да помогне за отстраняването на тази грешка, ще съм много благодарен

UPD по-подробен дневник

Причинено от: java.lang.RuntimeException: Действието няма да бъде извършено, защото целевият изглед не отговаря на едно или повече от следните ограничения: най-малко 90 процента от площта на изгледа се показва на потребителя. Целеви изглед: "DSeparatedButton{id=2131427459, res-name=button_login, visibility=VISIBLE, width=622, height=120, has-focus=false, has-focusable=true, has-window-focus=true, is- clickable=true, is-enabled=true, is-focused=false, is-focusable=true, is-layout-requested=false, is-selected=false, root-is-layout-requested=false, has-input- връзка=false, x=0.0, y=333.0, text=Вход с имейл, input-type=0, ime-target=false, has-links=false}"

Също така имам малка пръскаща анимация

въведете описание на изображението тук


person Gorets    schedule 14.07.2015    source източник
comment
Action will not be performed because the target view does not match one or more of the following constraints прочетохте ли това?   -  person Jared Burrows    schedule 14.07.2015
comment
@JaredBurrows да, виждам го, имам анимация на бутон за плъзгане нагоре, но как мога да изчакам 1 секунда? Опитах Thread.sleep(1000); и т.н., но не помага   -  person Gorets    schedule 14.07.2015
comment
А, благодаря, че актуализирахте публикацията си. Мисля, че постъпвате правилно, като използвате еспресо. Вижте това: stackoverflow.com/questions/21417954/espresso-thread-sleep.   -  person Jared Burrows    schedule 14.07.2015
comment
thx, ще го пробвам сега, наистина е странен случаят, защото нямам този проблем в robotium, но имам нестабилни тестове и грешки като OOM в емулатори (не реални устройства), така че реших да мигрирам към други един   -  person Gorets    schedule 14.07.2015
comment
А, това са две различни рамки от различни автори. Това е добре, така че когато следващият човек се сблъска с това, можем просто да потърсим този въпрос :)   -  person Jared Burrows    schedule 14.07.2015
comment
така че резултатът е лош, защото всъщност бутонът е на изгледа и не е нужно да чакаме. И още подробности за анимацията: Не съм правил никакви трансформации с бутон, просто начален екран върху бутон се скрива с анимация от 1 секунда   -  person Gorets    schedule 14.07.2015
comment
Здравей @Gorets, ако предоставиш малко от кода за IntroActivity, това ще помогне. Иначе има много догадки. Получавате отговори, които включват най-добри практики, но не непременно решения. Трябва да знаем как сте изградили въпросния изглед. Всичко, което знаем в момента е, че вашият съпоставител се проваля.   -  person OYRM    schedule 24.02.2016
comment
За да изчакате тестовия случай или да зададете изпълнението на тестовия случай, използвайте този. SystemClock.sleep(2000); ///2 секунди   -  person Nikunjkumar Kapupara    schedule 26.12.2017


Отговори (2)


Методът onView се използва само за изгледи, които са 100% видими на екрана, така че Espresso може да ги тества правилно. Моето предложение е да използвате метода onData, за да тествате изгледа. Това трябва да работи:

    onData(withText(R.string.in_email)).perform(click());

Мога да ви помогна повече, ако това не е отговорът, който търсите. Просто ме уведомете, ако това не проработи. Късмет!

person sunlover3    schedule 17.02.2016
comment
Опитах, но не работи, не ми се получава, когато го стартирам на физическо устройство samsung s7 във firebase, ако видя резултата от видеото, част от екрана е черна, изглежда, че е преоразмерен за видеоклипа. - person Daniel Gomez Rico; 25.10.2017

person    schedule
comment
Обяснение винаги се оценява с кода. - person Jérémie Bertrand; 09.09.2015