Test Robotium fallisce con: junit.framework.AssertionFailedError: Vista non può essere cliccato!

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

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

È stato utile?

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 ..

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top