riguarda l'espresso. Sto eseguendo con successo test di integrazione su un simulatore. Penso che alcuni test stiano fallendo perché funziona troppo velocemente. C'è un modo per rallentare l'esecuzione/riproduzione speeD?Rallentatore Espresso
risposta
È impossibile che un test non riesca a causare velocità. Espresso può sincronizzare tutte le operazioni di test con l'applicazione in prova. Per impostazione predefinita, Espresso attende che gli eventi dell'interfaccia utente nella coda dei messaggi correnti vengano elaborati e che venga completata l'impostazione predefinita AsyncTasks
prima di passare alla successiva operazione di test. Tuttavia, se questo non è sufficiente per la tua applicazione, puoi dire a Espresso quando essere inattivo e quando no. Per fare ciò è necessario:
- implementare l'interfaccia IdlingResource .
- Registrare una o più delle IdlingResource (s) con Espresso chiamando lo
Espresso.registerIdlingResource
nell'impostazione di prova.
Se hai bisogno di più aiuto chiedimi !!
Haha ... in realtà Espresso funziona così solo. Il problema che si sta affrontando è che gli eventi dell'interfaccia utente non sono in grado di completare (ad esempio, facendo clic su una voce di elenco prima che l'elenco venga caricato da una chiamata di rete). In questo caso, dove le risorse vengono caricate da altri thread, è possibile eseguire Thread.sleep (millis) o in modo più efficiente il metodo loopMainThreadForAtleast (millis) di UiController per attendere something to load
(evento da completare).
Quando si registra un Espresso Test in Android Studio, le dichiarazioni di sospensione vengono automaticamente aggiunte ai test quando è presente l'interazione delle visualizzazioni per gestire il ritardo. Questo è l'approccio che viene generato insieme ai commenti:
// Added a sleep statement to match the app's execution delay.
// The recommended way to handle such scenarios is to use Espresso idling resources:
// https://google.github.io/android-testing-support-library/docs/espresso/idling-resource/index.html
try {
Thread.sleep(700);
} catch (InterruptedException e) {
e.printStackTrace();
}