Robotium Test nicht mit: junit.framework.AssertionFailedError: View kann nicht angeklickt werden!

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

Frage

Ich habe gerade mit Robotium gestartet und versucht, einen ersten sehr einfachen Test, aber ein Problem erfahren, die ich nicht erklären kann / scheint nicht logisch für mich.

Ich habe einen TabHost mit einem Activity und einen Umschaltknopf für jede Aktivität, die in der TabHost Inhaltsbereich angezeigt wird. Wenn ich auf den Schalter drücken, ändert sich die Registerkarte Inhaltsbereich auf eine andere Tätigkeit (mTabHost.setCurrentTab (Intent Absicht);). Jede Aktivität hält solch eine umschaltbare Schaltfläche, immer mit einem Etikett „Toggle“. Wenn ich den Schalter auf die Aktivität Sekunden klicken, wird es (alle in der Registerkarte Content-Bereich) an den ersten Schalter zurück.

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

Nun, manuell das alles funktioniert gut, aber der Robotium Test nicht. Wenn ich versuche, den Schalter auf der zweiten Aktivität zu klicken, ich eine Fehlermeldung „junit.framework.AssertionFailedError: View kann nicht angeklickt werden“

Dies ist mein Test - sehr einfach und klein:

    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!

Was ich nicht verstehe, hier: „Diese Ansicht kann nicht angeklickt werden:“ Ich bin Überprüfung, dass die Taste mit „Toggle“ Label existiert und ist anklickbar, doch ich erhalte eine Fehlermeldung zu sagen. Und es gibt nur eine "Toggle" -Taste in der jeweils aktuellen Aktivität.

Im Zusammenhang mit dieser Frage ich eine andere geringfügige haben: Als ich mit TabHost + Activity arbeiten, werden „solo.getCurrentActivity ()“ immer die eingebettete Aktivität des Activity zurückkehren, nicht die äußere? Kann solo noch Zugang Elemente der äußeren Aktivität obwohl? In meinem obigen Fall aber ist der Umschaltknopf immer einen Teil der Innen / eingebetteten Aktivität -. In dem Fall, dass Angelegenheiten hier

War es hilfreich?

Lösung

Wir waren gerade Antwort von Robotium dev, dass dies ein Problem ist, das 1.8 in Robotium behoben werden. Siehe Hier

Andere Tipps

Sie können dieses verwenden:

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

oder:

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

Sie können stattdessen für JUnit Automation gehen selbst von Android zur Verfügung gestellt. Sie können KeyEvents leicht senden, um die Menüoption auszuwählen und die Aufgabe zu beenden.

Alles, was Sie tun müssen, ist eine JUnit-Testfall-Methode in dem Testcode erstellen, die die Menüoption auswählt. Führen Sie die folgenden Methoden unter: -

  • Starten Sie Aktivität in der Testmethode
  • senden KeyEvent Menü klicken Sie auf die Aktivität. Wenn die Menüoptionen Sende oben, unten, links und rechts keyevents erhalten, den Fokus auf die Option Senden & Empfangen KeyEvent DPAD CENTER angezeigt werden.

Hope dies auch Ihr Problem lösen. Aber bevor diese haben Sie ein wenig von JUnit wissen & Test-Framework in Android sdk ..

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top