Ho configurato calabash-android perfettamente funzionante con uno scenario predefinito (utilizzando cucumber
per eseguire i test o calabash-android console
per accedere alla modalità REPL).Calabash-android: allegare all'app in esecuzione
Tuttavia, in alcuni scenari, risulta essere molto utile essere in grado di collegarsi a un'app già in esecuzione. Ad esempio, avviare un'applicazione in modalità di debug e avviare i test per poter impostare i punti di interruzione e verificare perché determinate funzionalità non funzionano come previsto nei miei scenari.
Quando si tratta di Calabash su iOS, questa operazione è molto semplice: non è necessaria alcuna preparazione aggiuntiva in quanto l'app inizia con un server di prova incluso e posso allegare la calabash in qualsiasi momento. Tuttavia, Calabash Android sembra forzare l'uscita dell'app ogni volta che cerco di avviare la calabash con l'app in esecuzione.
C'è un modo per aggirarlo?
EDIT Sembra che le risposte qui sotto non ha aiutato molto, ma spero ancora qualcuno (devs Calabash, dove sei?) Si imbattervi in questo un giorno. Ho passato un po 'di tempo alla scoperta del problema stesso, e questo è ciò che il problema specifico è:
- avviare l'applicazione in modalità di debug (usando Xamarin, per esempio)
- Inizio
calabash-android console PATH_TO_APK
- Prova l'emissione di tutti i comandi (ad esempio
query("*")
) - non riesce con un messaggio KeepAliveDisconnected - Provare a eseguire start_test_server_in_background - l'applicazione viene ucciso e sessione di debug è terminato
Scavando più a fondo nei dettagli, ho scoperto che in realtà start_test_server_in_background corre shell am instrument
con sh.calaba.instrumentationbackend.CalabashInstrumentationTestRunner
essendo strumentazione di back-end e un mucchio di altre bandiere che descrivono quali app per strumento, quello che porta da utilizzare ecc
Così Detto questo, il seguente sarebbe di aiuto molto: è possibile che lo strumento shell am sia collegato a un'applicazione in esecuzione?
Calabash deve avviare l'app tramite il comando instrumentation, in modo che il proprio server sia in esecuzione con privilegi che consentono di interrogare e controllare l'app. http://stackoverflow.com/questions/10942049/is-it-possible-to-enter-debug-mode-for-android-when-running-junit-test suggerisce che potresti aggiungere "debug true" alla strumentazione di Calabash comando, quindi utilizza il pulsante "collega al processo in esecuzione" (sul lato dell'icona di debug in Android Studio) Assicurati che il file manifest dell'app sia impostato come debugabile. –
[setup test env usando calabash e cetriolo] (http://www.singhajit.com/cucumber-and-calabash-for-android-app-testing) –