2017-03-11 1 views
0

So habe ich einen Assistenten mit 4 Panels, der erste hat einen DatePicker, den ich im Standard-Kalender-Modus habe.Espressotest wischt den falschen Pager

Wenn dieser Code ausgeführt wird:

@RunWith (AndroidJUnit4.class) public class OnboardActivityTest {

@Rule 
public ActivityTestRule<MainActivity> mActivityTestRule = new ActivityTestRule<>(MainActivity.class); 

@Test 
public void onboardActivityTest() { 
    ViewInteraction appCompatButton = onView(
      allOf(withId(R.id.button), withText("Start Setup"), 
        withParent(allOf(withId(R.id.activity_main), 
          withParent(withId(android.R.id.content)))), 
        isDisplayed())); 
    appCompatButton.perform(click()); 

    onView(withId(R.id.onboardingPager)).perform(swipeLeft()); 

der Test den Kalender links klaut und ich im nächsten Monat bekommen, nicht die nächste Seite .

Ich hatte dies zuvor funktioniert, wenn ich den DatePicker im Spinner-Modus hatte, war es richtig mit dem Pager.

Das einzige, was ich denken kann ist, dass es den Pager nicht finden kann und so der Swipe läuft nur gegen die Ansicht root?

Wenn ich es zurück in Spinner-Modus ändere, wird die Seite weitergeführt.

+0

Wie ist das Verhalten in Ihrer App, wenn Sie mit dem Finger wischen? kannst du von überall wischen und der viewpager wechselt oder musst du vom border (außerhalb des pickerlayouts) wischen oder sonst wischst du den picker? – stamanuel

+0

Ich benutze den Emulator so natürlich bin ich Click-Ziehen, um den Swipe zu machen. Aber sieh dir den Code an! Ich bekomme den Pager nach seiner ID? – Rob

+0

Ja, ich denke das ist nicht so wichtig. Espresso führt den Wischvorgang auf dem Bildschirm aus - wenn es eine andere Ansicht über Ihr Pager-Layout gibt, erhält diese Ansicht den Wischvorgang. Also die beste Option imho wäre, entweder die Registerkarte Header wählen, wenn es angezeigt wird oder wischen an einer Stelle, wo der Pflücker die Registerkarte nicht überlagert – stamanuel

Antwort

0

wieder nicht sicher, ob es hilft (da ich weiß nicht, wie Sie Ihre genaue Layout aussieht): Sie können eine individuelle Swipe Veranstaltung versuchen, wo Sie genau definieren, von wo nach wo die Swipe durchgeführt wird:

public static ViewAction customLeftSwipe() { 
    return new GeneralSwipeAction(Swipe.FAST, GeneralLocation.BOTTOM_RIGHT, 
      GeneralLocation.BOTTOM_LEFT, Press.FINGER); 
} 

Verwendung:

+1

Wow cool! Werde das versuchen. In der Zwischenzeit habe ich es zeitweise ausgetrickst. Ich habe onView (withId (R.id. )) und es funktioniert! (Hätte es gesagt, dumme es.) – Rob