Ответ 1
Я предполагаю, что ваша активность всплеска выполняет некоторую инициализацию.
Если это так, мое предложение состоит в том, чтобы определить какой-то шаблон слушателя, чтобы иметь возможность получить обратный вызов, когда выполняется инициализация. Затем вы можете заставить Espresso ждать инициализации с IdlingResource.
NB: Следующий код НЕ является полным, но он предназначен для подсказки, как это сделать:
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();
}
}
}
Где onApplicationInitCompleted() - это обратный вызов, который вы определили и который должен вызываться, когда выполняется операция Splash, и поэтому выполняется инициализация.
Наконец, зарегистрируйте этот новый IdlingResource с помощью Espresso, вызвав Espresso.registerIdlingResource в настройке теста.