Je suppose que votre activité de démarrage effectue une initialisation. Si c'est le cas, ma suggestion est de définir une sorte de modèle d'écoute afin d'être en mesure d'obtenir un rappel lorsque l'initialisation est terminée. Ensuite, vous pouvez demander à Espresso d'attendre l'initialisation avec IdlingResource.
NB: Ce qui suit ne code complet, mais il est destiné à vous donner un indice sur la façon de le faire:
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();
}
}
}
Où onApplicationInitCompleted() est la fonction de rappel que vous avez défini et qui doit être appelée lorsque l'activité Splash, et donc l'initialisation, est terminée.
Enfin, enregistrez cette nouvelle IdlingResource avec Espresso en appelant Espresso.registerIdlingResource dans la configuration de test.