Test Robotium fallisce con: junit.framework.AssertionFailedError: Vista non può essere cliccato!
-
29-09-2019 - |
Domanda
Ho appena ottenuto cominciato con Robotium e ho provato un primo test molto semplice, ma l'esperienza qualche problema che non riesco a spiegare / non sembra logica per me.
Ho un TabHost con ActivityGroup e un interruttore per ogni attività che viene visualizzato nella sezione contenuti tabhost. Quando si preme il pulsante di commutazione, l'area di contenuto sulla scheda passa a un'altra attività (mTabHost.setCurrentTab (Scopo intenti);). Ogni attività detiene tale un interruttore, sempre con l'etichetta "Toggle". Perché quando clicco sul pulsante di commutazione sull'attività secondi, si passa di nuovo al primo (tutto dentro l'area del contenuto scheda).
|-----------------|
| TabHost | |
|-----------------|
| |
| Toggle-Button |
| |
| (ActivityGroup: |
| Activities |
| change in here) |
| |
|-----------------|
Ora, manualmente questo tutto funziona bene, ma il test robotium non lo fa. Quando si tenta di fare clic sul pulsante di attivazione sulla seconda attività, ottengo un messaggio di errore "junit.framework.AssertionFailedError: Vista non può essere cliccato"
Questa è la mia prova - molto semplice e piccolo:
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!
Quello che non capisco qui: "Questo punto di vista non può essere cliccato" Sto controllando che il pulsante con l'etichetta "Toggle" esiste ed è cliccabile, comunque, sto ricevendo un errore che dice. E c'è un solo tasto "Toggle" nella rispettiva attività corrente.
Related a questa domanda ho un altro minorenne uno: Quando lavoro con TabHost + ActivityGroup, sarà "solo.getCurrentActivity ()" ritorno sempre l'attività incorporata del ActivityGroup, non quella esterna? Can solista ancora elementi di accesso della attività esteriore però? Nel mio caso di cui sopra, però, il pulsante di commutazione è sempre parte dell'attività interna / embedded -. Nel caso in cui le questioni qui
Soluzione
Sono appena risposta da robotium dev, che questo è un problema che verrà risolto in Robotium 1.8. Vedere href="http://groups.google.com/group/robotium-developers/browse_thread/thread/d02d8f27af261570" Qui
Altri suggerimenti
È possibile utilizzare questo:
solo.clickOnView(solo.getView("Toggle"))
o
solo.clickOnView(solo.getView(R.id.B))
Invece si può andare per JUnit Automation sé forniti da Android. Si può facilmente inviare KeyEvents per selezionare l'opzione di menu e finire il compito.
Tutto quello che devi fare è creare un metodo dei casi di test JUnit nel codice di prova che seleziona l'opzione di menu. Seguire questi metodi indicati: -
- Avvia attività nel metodo di prova
- invia menù KeyEvent clicca per l'attività. Quando le opzioni del menu sono visualizzate invio Su, Giù, Sinistra e keyevents diritto di ottenere la messa a fuoco sul opzione di invio e KeyEvent DPAD CENTRO.
Spero che questo bene a risolvere il problema. Ma prima di questo è necessario conoscere un po 'di JUnit e framework di test disponibile in Android SDK ..