Immagino che la tua attività splash stia eseguendo un'inizializzazione.
In questo caso, il mio suggerimento è di definire una sorta di pattern listener per poter ottenere una richiamata al termine dell'inizializzazione. Quindi, puoi fare in modo che Espresso attenda l'inizializzazione con IdlingResource.
NB: Il seguente non è codice completo, ma ha lo scopo di dare un suggerimento su come farlo:
public class SplashIdlingResource implements IdlingResource, YourApplicationInitListener {
// volatile because can be set by a different
// thread than the test runner: the one calling back
private volatile boolean mIsInitialized;
private ResourceCallback mCallback;
public SplashIdlingResource() {
YourApplication application = // retrieve your Application object
mIsInitialized = application.isInitialized();
if (!mIsInitialized) {
application.addInitListener(this);
}
}
@Override
public String getName() {
return SplashIdlingResource.class.getName();
}
@Override
public boolean isIdleNow() {
return mIsInitialized;
}
@Override
public void registerIdleTransitionCallback(ResourceCallback callback) {
mCallback = callback;
}
@Override
public void onApplicationInitCompleted() {
m_isInitialized = true;
if (m_callback != null) {
m_callback.onTransitionToIdle();
}
}
}
Dove onApplicationInitCompleted() è il callback definito e che deve essere chiamato quando l'attività Splash e così l'inizializzazione è terminata.
Infine, registrare questo nuovo IdlingResource con Espresso chiamando Espresso.registerIdlingResource nella configurazione di prova.
fonte
2014-06-11 15:23:15