2010-02-22 7 views
9

J'ai trouvé un outil pour les tests d'instrumentation appelé Robotium. Il est facile et simple de tester les boîtes noires d'applications Android. Nous pouvons l'utiliser comme suit:Exemples pour 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")); 

tout organisme peut-il avoir plus d'idée à ce sujet? Peut-on s'il vous plaît dire comment pouvons-nous l'utiliser pour webviews et listviews etc.

Répondre

15

S'il vous plaît voir la page wiki QA pour la question commune et des réponses sur ce qui Robotium soutient: http://code.google.com/p/robotium/wiki/QuestionsAndAnswers

Aussi s'il vous plaît aller à la page Mise en route : http://code.google.com/p/robotium/wiki/Getting_Started

Vous y trouverez un exemple de projet de test que vous téléchargez et recherchez des idées. Vous pouvez également télécharger le javadoc à partir de: http://code.google.com/p/robotium/downloads/list pour voir quelle fonctionnalité est disponible pour le moment.

Pour des tutoriels s'il vous plaît visitez: http://code.google.com/p/robotium/wiki/RobotiumTutorials

Sincèrement, Renas

2

méthode searchText recherche également listviews. Vous pouvez l'utiliser avec des assertions pour vous assurer que votre ListViews contient le bon contenu

1

Pour pouvoir cliquer sur Liste. Si votre activité est de type ListActivity, vous pouvez utiliser clickInList avec un paramètre qui est l'indice de ligne sur lequel vous devez cliquer. Dans les autres cas, utilisez clickInList avec deux paramètres: l'index de l'écran de liste et le numéro de ligne. Pour WebView si vous chargez une page, vous devez utiliser waitForText() mathod pour vérifier le contenu.

autres exemples: http://bitbar.com/blog/54/automated-ui-testing-android-applications-robotium

14

je peux dire, ce que vous n'êtes pas en mesure de le faire avec Robotium :)

  1. test Cross Activités, Robotium est capable de fonctionner avec une même application de certificat, sinon vous obtiendrez une exception d'injection d'événements (par exemple, vous ne pouvez pas faire de clics sur le clavier de l'écran)

  2. Robotium n'a aucun mécanisme pour gérer les alertes/popus/dialogues attendus/inattendus. Par exemple, les tests javascript d'iOs ont un drapeau booléen très simple et un rappel pour gérer les alertes

  3. Robotium a un gros problème avec les méthodes de défilement automatique (peut-être actuellement il est fixe) par exemple si vous cherchez le texte, qui n'est pas affiché, Robotium se cumulera à la fin de la vue de défilement et de faire assertTrue (false) pour arrêter le défilement

  4. Robotium a assertTrue logique (faux) pour des problèmes/situations inattendues rapports au lieu de retourner une valeur Enum ou booléenne (succès/échec) Donc, pour un bon stress tests qui sont exécutés 24/7, vous devez ajouter vos propres méthodes qui ne s'arrêteront pas de test, il suffit de gérer «méthode ne cliquez pas sur xy» valeur du résultat

  5. Vous devrez implémenter une certaine logique pour cliquer sur les éléments dans la vue défilement/liste.En raison de Robotium clique dans le centre de la vue, vous obtiendrez toujours exception ou assertTrue (false) lorsque vous essayez de cliquer vue avec seulement une partie de 20% montré

En Robotium générale est très cool et utile et j'aime c'est très bien :) Et je ne peux pas imaginer la vie sans cette grande bibliothèque!

+2

Vous pouvez détecter les erreurs Robotium en utilisant: try {...} catch (Erreur err) {..} // Ainsi, Robotium ne plante pas votre test. – user643154

+1

Vous pouvez obtenir la vue des parents et cliquez dessus, parfois beaucoup plus grande que l'image ou le texte. J'espère que ça va aider quelqu'un. – zest

0
  • Vues

Pour listviews vous pouvez utiliser la méthode suivante solo.getCurrentListViews() qui renvoient un certain nombre de vues de la liste sur l'écran en cours, puis itérer à travers ou obtenir d'autres types d'objets (widgets Android) d'eux par exemple, vous devez cliquer sur vues d'image de toutes les listes sur l'écran qui ne vous rediriger vers une autre activité et seulement un changement d'état d'autres objets:

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."); 
    } 
} 

Vous pouvez saisir du texte en editText afficher ou obtenir du texte à partir de textViews. Vous pouvez combiner Robotium avec Java et Android API. Par exemple vérifier la visibilité des images sur l'écran à l'aide getVisibility() méthode et en le comparant avec trois grands États View.GONE, View.VISIBLE, View.INVISIBLE. Ou vous pouvez vérifier la connexion en utilisant la méthode Java HttpURLrequest avant l'exécution de vos tests.

  • Autres

Si vous avez la source, vous pouvez prendre des objets de toute disposition connaître son ID! Existe aussi beaucoup de trucs géniaux comme solo.waitForActivity(), solo.assertMemoryNotLow(), solo.takeScreenShot().

Plus d'exemples sur l'utilisation de Robotium vous pouvez trouver ici en joignant Robotium community.