Robotium UI Test für App mit Navigationsschublade

Wir haben die App mit Navigation Drawer von support.v4 Bibliothek. Wir automatisieren UI-Tests mit Robotium und alles ist in Robotium , aber Navigation Drawer kann nach dem Zufallsprinzip einfrieren, so dass einige Tests zufällig ausfallen können.

Das ist definitiv kein Robotium Problem, denn ich habe gesehen, wie Navigation Drawer in einigen anderen Apps auf meinem Gerät gefriert wird, auch in meinen eigenen Apps.

  • Wie ändere ich die Farbe des Daumens in der Suchmaschine?
  • Was ist die beste Praxis, um Elemente in CardView zu gruppieren?
  • Laden Sie eine Datei über ein HTTP-Formular über MultipartEntityBuilder mit einer Fortschrittsleiste hoch
  • Cursor.getType () für API Level <11
  • Android zwei AsyncTasks seriell oder parallele Ausführung? - Die zweite ist eiskalt aber das Ergebnis ist ok
  • Abrufen aller Drawable-Ressourcen aus Resources-Objekt
  • Ich habe bereits versucht, für Navigation Drawer aus der Frage der Frage zu fragen: Warum schlägt DrawerLayout manchmal beim Öffnen?

    Es half und zufällige Einfrierungen sank von 90% auf etwa 10%, aber 10% der Testläufe können scheitern und das ist sehr schlecht, vor allem für die kontinuierliche Integration …

    Kann jemand schon dieses Problem behoben haben?

  • Wie kann man die Audiodateien direkt aus dem Res / Roh-Ordner abspielen?
  • Android-Kompatibilität Kontextuelle Aktionsleiste
  • Wie man Android-Anwendung im Telefon-Schlaf-Modus ohne USB-Verbindung zu debuggen
  • Funktioniert jedes Android-Handy SHA-256
  • So stellen Sie den NDK-Pfad in OSX für Android Studio ein
  • Ist Android Bug in Last "Layout-ldltr" Layout gegen "Layout-ldrtl" nach Ausrichtung geändert?
  • 3 Solutions collect form web for “Robotium UI Test für App mit Navigationsschublade”

    Ich stieß auf das gleiche Problem mit unseren Robotium-Tests und die Lösung, die ich am Ende ging mit war, um eine Drag-Geste zu simulieren (wie ein echter Benutzer würde öffnen Sie die Schublade) anstatt zu versuchen, klicken Sie auf die Schublade umschalten oder mit den solo Methoden. Ich schien zu bemerken, die intermittierende fehlschlägt häufiger auf Geräten mit Android älter als SDK 18.

    Ich habe diese Methode in unsere eigene Unterklasse von Solo und wir haben seitdem keinen Fehler gemacht (über Hunderte von Läufen).

     /** * Open the navigation drawer with a drag gesture. Click based triggering is * flaky on SDK < 18 */ public void openNavigationDrawer() { Point deviceSize = new Point(); getCurrentActivity().getWindowManager().getDefaultDisplay().getSize(deviceSize); int screenWidth = deviceSize.x; int screenHeight = deviceSize.y; int fromX = 0; int toX = screenWidth / 2; int fromY = screenHeight / 2; int toY = fromY; this.drag(fromX, toX, fromY, toY, 1); } 

    Ich benutze auch android.support.v4.widget.DrawerLayout und fand keine Möglichkeit, es einfach zu tun.

    Ich schaffte es endlich, die Schublade zu öffnen, indem ich den Code unten benutzte

     /** * As we use app compat it seems Solo#setNavigationDrawer is not doing well * (drawer does not open, but the button is clicked) * * Same result for clickOnView(getView(android.R.id.home)) * * This code opens the navigation drawer on the main thread * Be aware : you need to provide your DrawerLayout id (you can do it in params) */ public void openCompatNavigationDrawer() { getInstrumentation().runOnMainSync(new Runnable() { @Override public void run() { ((DrawerLayout) mSolo.getView(R.id.drawer_layout)) .openDrawer(Gravity.LEFT); } }); } 

    Gist hier erhältlich https://gist.github.com/quentin7b/9b51a3827c842417636b

    Open Schublade Navigation: solo.clickOnScreen(50, 50);

    Wählen Sie den Eintrag in der Schublade Navigation:

    ListView listView = (ListView) solo.getView(R.id.left_drawer); View SwitchOrganizations = listView.getChildAt(0); solo.clickOnView(SwitchOrganizations);

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.