Test Robotium échoue avec: junit.framework.AssertionFailedError: View ne peut pas être cliqué!

StackOverflow https://stackoverflow.com/questions/3911419

Question

Je viens de me commencé avec Robotium et essayé un premier test très simple, mais l'expérience un problème que je ne peux pas expliquer / ne me semble pas logique.

J'ai un TabHost avec un ActivityGroup et un bouton à bascule sur chaque activité qui est affichée dans la section du contenu de tabhost. Lorsque j'appuie sur le bouton à bascule, la zone de contenu onglet passe à une autre activité (mTabHost.setCurrentTab (intention intention);). Chaque activité est titulaire d'un bouton à bascule, toujours avec une étiquette « Toggle ». Lorsque je clique sur le bouton à bascule sur l'activité secondes, il passera à la première (tout à l'intérieur de la zone de contenu onglet).

|-----------------|
| TabHost |       | 
|-----------------| 
|                 | 
| Toggle-Button   | 
|                 | 
| (ActivityGroup: | 
| Activities      | 
| change in here) |
|                 | 
|-----------------|

Maintenant, tout cela fonctionne manuellement bien, mais le test de Robotium ne fonctionne pas. Lorsque je tente de cliquer sur le bouton à bascule sur la deuxième activité, je reçois un message d'erreur « junit.framework.AssertionFailedError: Voir ne peut pas être cliqué sur »

Ceci est mon test - très simple et petit:

    solo.sleep(5000);
    solo.waitForActivity("StartTabsActivity", 10000);

    solo.clickOnButton("Toggle");
    // this will swap the activity inside the tabhost content section

    solo.sleep(5000);
    solo.waitForActivity("StatusListActivity", 5000);

    solo.assertCurrentActivity("Expected StatusList activity", "StatusListActivity");

    LogUtils.logD("robotium: button label: " + solo.getButton(1).getText()); 
    // ... outputs: robotium: button label: Toggle

    LogUtils.logD("robotium: button clickable: " + solo.getButton(1).isClickable()); 
    // ... outputs: robotium: button clickable: true

    solo.clickOnButton("Toggle");   
    // ... throws: junit.framework.AssertionFailedError: View can not be clicked!

Ce que je ne comprends pas ici: «Ce point de vue ne peut pas être cliqué sur » Je vérifie que le bouton avec l'étiquette « Toggle » existe et est cliquable, cependant, je reçois une erreur disant. Et il n'y a qu'un seul bouton « Activer » dans l'activité actuelle respective.

similaire à cette question, j'ai une autre mineure: Quand je travaille avec TabHost + ActivityGroup, sera « solo.getCurrentActivity () » renvoie toujours l'activité intégrée du ActivityGroup, pas celui de l'extérieur? Can solo encore des éléments d'accès de l'activité extérieure bien? Dans mon cas ci-dessus cependant, le bouton à bascule fait toujours partie de l'activité intérieure / intégrée -. Dans le cas où les questions ici

Était-ce utile?

La solution

Il suffit de se Robotium réponse de dev, que c'est une question qui sera fixé à 1,8 Robotium. Voir

Autres conseils

Vous pouvez utiliser celui-ci:

solo.clickOnView(solo.getView("Toggle"))

ou

solo.clickOnView(solo.getView(R.id.B))

vous pouvez plutôt opter pour JUnit automatisation lui-même fourni par Android. Vous pouvez facilement envoyer KeyEvents pour sélectionner l'option de menu et terminer la tâche.

Tout ce que vous devez faire est de créer une méthode de cas de test JUnit dans le code de test qui sélectionne l'option de menu. Suivez ces méthodes suivantes: -

  • Activité de lancement dans la méthode d'essai
  • envoyer menu cliquez KeyEvent à l'activité. Lorsque les options du menu sont affichés envoyer Haut, Bas, Gauche et Droite KeyEvents pour obtenir l'accent sur l'option et envoyer KeyEvent DPAD CENTRE.

Hope this bien résoudre votre problème. Mais avant cela, vous devez connaître un peu de JUnit & framework de test disponible dans Android sdk ..

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top