6

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

4

È 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 !!

-1

Ho avuto anche questo problema. Ho risolto rimuovendo l'animazione delle attività sul mio dispositivo dalle opzioni dello sviluppatore.

Se il problema persiste, è possibile utilizzare sleep nel test per rallentare.

SystemClock.sleep(1000); 

enter image description here

0

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

0

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(); 
} 

Link to the docs