Domyślam się, że Twoja aktywność powitalna wykonuje pewne inicjowanie.
Jeśli tak jest, moją sugestią jest zdefiniowanie pewnego rodzaju wzorca słuchacza, aby móc uzyskać wywołanie zwrotne po zakończeniu inicjowania. Następnie możesz sprawić, by Espresso poczekało na inicjalizację przy pomocy IdlingResource.
Uwaga: Poniższy nie jest kompletny kod, ale to znaczy, że daje wskazówkę, w jaki sposób to zrobić:
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();
}
}
}
Gdzie onApplicationInitCompleted() jest zwrotna zdefiniowano i która musi zostać wywołana, gdy Aktywność Splash, a więc inicjalizacja, jest wykonywana.
Wreszcie, zarejestruj nowy IdlingResource z Espresso, wywołując Espresso.registerIdlingResource w konfiguracji testowej.