2016-04-26 16 views
15

A quanto pare una prova di funzionamento della strumentazione viene interrotta quando si verifica un'eccezione sulla nell'applicazione instrumentata:Come continuare un test della strumentazione Android eseguito dopo l'eccezione?

di prova non è riuscito a correre fino al completamento. Motivo: "L'esecuzione della strumentazione non è riuscita a causa di" Eccezione ". Controllare il logcat del dispositivo per i dettagli

È questo il comportamento desiderato o un errore di configurazione in un dispositivo di scorrimento personalizzato?

Sto utilizzando un numero personalizzato MonitorinInstrumentation [1] per automatizzare i test di accettazione.

Purtroppo l'esecuzione del test viene annullata quando si verifica un'eccezione in un test. Voglio che la suite di test sia completata e segnare solo i test falliti, come in JUnit.

Esiste un approccio generale per eseguire test (connessi) senza uscire dall'intera strumentazione nel caso in cui si verifichi un'eccezione in un test?

  1. https://github.com/cucumber/cucumber-jvm/blob/master/examples/android/android-studio/Cukeulator/app/src/androidTest/java/cucumber/cukeulator/test/Instrumentation.java

risposta

2

test Strumentazione sollevare un'eccezione quando qualcosa va storto (ad esempio alcune condizioni che si desidera controllare). Di solito è possibile evitare che alcuni test falliscano usando l'istruzione try catch (o cambiando tali controlli). In questo caso c'è qualcosa che ha reso la macchina virtuale Dalvik ferma. Questo di solito è causato da un crash nella tua app. Prova a controllare attentamente il flusso dei test per analizzare se ci sono alcuni arresti anomali. Inoltre, assicurati di non utilizzare System.exit (0) in onDestroy() in alcune delle tue attività perché ciò potrebbe causare il tuo problema. Spero di poterti aiutare.

+0

Prima di tutto molte grazie per la tua risposta. Sfortunatamente non fornisce una soluzione al mio problema. Come ho detto, l'applicazione in esame solleva l'eccezione che interrompe la corsa completa della strumentazione. L'aggiunta di un try-catch nel test non è applicabile. Sto cercando una soluzione - se è possibile con la strumentazione - dove continua la strumentazione e solo il test, che causa l'arresto dell'applicazione, è contrassegnato come "rosso". – a11n

+0

So che non è una soluzione per questo problema. Come ho detto c'è qualcosa di stoppig Dalvik Virtual Machine: a mio avviso questo può essere correlato ad alcuni errori nel tuo codice e quindi ti invito a verificare il tuo codice. Cerca alcuni arresti anomali e assicurati di non chiamare ** System.exit (0) ** in ** onDestroy() **. –

+0

Né System.exit() né onDestroy() vengono chiamati. Ma Dalvik VM si ferma, ovviamente, a causa dell'eccezione nell'applicazione strumentata. Dopo aver letto http://developer.android.com/tools/testing/testing_android.html#Instrumentation ho avuto l'impressione che la strumentazione avvii il processo di applicazione e sia in qualche modo indipendente dall'applicazione.Ma stai dicendo che la strumentazione "muore" se il processo strumentale "muore"? C'è qualche possibilità di disaccoppiare questo? – a11n

0

Si può cercare di mettere nel vostro principale build.gradle

tasks.withType(Test) { 
    ignoreFailures = true 
} 

Secondo la documentazione:

Se uno dei test fallisce, su qualsiasi dispositivo, la costruzione fallirà.

Scegli questa android testing

+1

Il mio problema non è una build fallita. Quindi, la tua proposta purtroppo non aiuterà. (Il mio problema è che la suite di test non viene portata a termine se un test porta a un'eccezione all'interno dell'applicazione in prova). – a11n

Problemi correlati