2010-02-22 9 views
9

Ich habe ein Tool für Instrumentation Testing namens Robotium gefunden. Es ist einfach und einfach für Black-Box-Test von Android-Anwendungen. Wir können es verwenden, wie folgt:Beispiele für Robotium

solo.clickOnText("Other"); 
    solo.clickOnButton("Edit"); 
    assertTrue(solo.searchText("Edit Window")); 
    solo.enterText(1, "Some text for testing purposes") 
    solo.clickOnButton("Save"); 
    assertTrue(solo.searchText("Changes have been made successfully")); 
    solo.clickOnButton("Ok"); 
    assertTrue(solo.searchText("Some text for testing purposes")); 

Kann jemand anderen mehr Ahnung davon haben? Kann jemand bitte sagen, wie können wir es für WebViews und Listviews verwenden usw.

Antwort

15

Bitte beachten Sie die QA Wiki-Seite für häufig gestellte Frage und Antworten auf das, was Robotium unterstützt: http://code.google.com/p/robotium/wiki/QuestionsAndAnswers

Auch gehen Sie bitte auf der Seite Erste Schritte : http://code.google.com/p/robotium/wiki/Getting_Started

Dort finden Sie ein Beispiel Testprojekt, das Sie herunterladen und nach Ideen suchen. Sie können das Javadoc auch herunterladen von: http://code.google.com/p/robotium/downloads/list, um zu sehen, welche Funktionalität es im Moment gibt.

Für Tutorials finden Sie unter: http://code.google.com/p/robotium/wiki/RobotiumTutorials

Mit freundlichen Grüßen, Renas

2

search Methode sucht auch Listviews. Sie können es zusammen mit Assertions verwenden, um sicherzustellen, dass Ihre ListViews den richtigen Inhalt enthalten

1

Um auf Liste zu klicken. Wenn Ihre Aktivität der ListActivity-Typ ist, können Sie clickInList mit einem Parameter verwenden, der der Index der Zeile ist, auf die geklickt werden soll. In anderen Fällen verwenden Sie clickInList mit zwei Parametern - Listview Screen Index und Zeilennummer. Für WebView, wenn Sie eine Seite laden, sollten Sie den Inhalt mit waitForText() mathod überprüfen.

weitere Beispiele: http://bitbar.com/blog/54/automated-ui-testing-android-applications-robotium

14

ich sagen kann, was man nicht in der Lage ist mit Robotium zu tun :)

  1. Kreuz Prüfung, Robotium der Lage ist, nur mit demselben Zertifikat App arbeitet anders Sie erhalten eine Inject-Ereignisausnahme (z. B. können Sie keine Klicks auf der Bildschirmtastatur ausführen)

  2. Robotium verfügt über keinen Mechanismus für erwartete/unerwartete Warnungen/Popus/Dialoge. Zum Beispiel iOS-Javascript-Tests hat sehr einfache boolesche Flag und Callback für die Handhabung von Warnungen

  3. Roboter hat großes Problem mit automatischen Scroll-Methoden (möglicherweise derzeit ist es behoben) zum Beispiel, wenn Sie nach dem Text suchen, der nicht gezeigt wird, Robotium stapelt am Ende der Bildlaufansicht und macht assertTrue (false) zum Stoppen des Bildlaufs

  4. Robotium hat eine wahr (falsche) Logik für die Meldung von Problemen/unerwarteten Situationen, anstatt einen Enumerationswert oder Boolean (Erfolg/Fehler) zurückzugeben Für einen guten Stresstest, der rund um die Uhr ausgeführt wird, müssen Sie also Ihre eigenen Methoden hinzufügen, die den Test nicht stoppen. Behandeln Sie einfach 'Methode fehlgeschlagen, um auf' xy 'zu klicken. Ergebniswert

  5. Sie müssen eine Logik implementieren, um auf Elemente in der Bildlauf-/Listenansicht zu klicken.Wegen Robotium in der Mitte der Ansicht klickt, werden Sie immer Ausnahme oder assertTrue bekommen (false), wenn versucht Ansicht klicken mit nur 20% Teil

    gezeigt

Im Allgemeinen Robotium ist sehr cool und nützlich und Ich mag es sehr viel :) Und ich kann mir ein Leben ohne diese großartige Bibliothek nicht vorstellen!

+2

Sie können Robotium-Fehler mit: try {...} catch (Fehler err) {..} // Auf diese Weise wird Robotium Ihren Test nicht abstürzen. – user643154

+1

Sie können übergeordnete Ansicht und klicken Sie darauf, manchmal ist es viel größer als Bild oder Text. Ich hoffe, es wird jemandem helfen. – zest

0
  • Ansichten

Für Listviews Sie solo.getCurrentListViews() folgende Methode verwenden können, die eine Anzahl von Listenansichten auf dem aktuellen Bildschirm zurückzukehren, und dann durch oder andere Objekttypen (android Widgets) von ihnen erhalten iterieren zum Beispiel benötigen Sie Bildansichten aus allen Listen auf dem Bildschirm klicken, die Sie nicht auf eine andere Tätigkeit umleiten und Zustand anderer Objekte nur ändern:

ArrayList<ListView> lw = solo.getCurrentListViews(); // get all list views 
// logging to logcat 
Log.i("stats", "number of list views on the current screen: " + aLw.size()); 
if (aLw.size() != 0) 
for (ListView l: aLw) { 
    // Take all image views from list and click each 
    ArrayList <ImageView> aIw = solo.getCurrentImageViews(l); 
    Log.i("stats", "list view " + l + " contains " + iw.size() + " image views."); 
    if (aIw.size() != 0) 
    for (int i = 0; i < aIw.size();) { 
     // clicking 
     solo.clickOnView(aIw.get(i)); 
     Log.i("click", "image view " + i " clicked."); 
    } 
} 

Sie können Text eingeben zu editText anzeigen oder Text von TextViews abrufen. Sie können Robotium mit Java und Android API kombinieren. Zum Beispiel Kontroll Sichtbarkeit von Bildern auf dem Bildschirm unter Verwendung getVisibility() Verfahren und mit drei Hauptzuständen View.GONE, View.VISIBLE, View.INVISIBLE vergleicht. Oder Sie können die Verbindung mit der Java-Methode HttpURLrequest vor der Ausführung Ihrer Tests überprüfen.

  • Andere

Wenn Sie Quellen Sie Objekte aus einem beliebigen Layout zu wissen, seine ID nehmen! Es gibt auch eine Menge toller Sachen wie solo.waitForActivity(), solo.assertMemoryNotLow(), solo.takeScreenShot().

Weitere Beispiele über Robotium Verwendung finden Sie hier durch Beitritt Robotium community.