Picasso использует потоки для загрузки изображений в фоновом режиме. Даже при загрузке из активов есть небольшая задержка до тех пор, пока она не появится, что заставляет фотографии не появляться на захвате ложкой. Я мог бы добавить 1-й сон в тест, но мне было интересно, есть ли лучший способ.Espresso + Picasso + Spoon
Я попытался установить Downloader
или ее RequestHandler
, чтобы вернуть изображение синхронно, но я думаю, что нужно установить ExecutorService
, который использует основной поток или AsyncTask
(например, что эспрессо будет ждать). С модификацией мы можем использовать AsyncTask.THREAD_POOL_EXECUTOR
с MainThreadExecutor
, но я не уверен, как это сделать для пикассо.
В качестве обходного пути, я обернул Picasso в ImageUtil, который не будет использоваться во время инструментовки:
DebugModule {
@Provide
ImageUtil imageUtil() {
if (isTest) {
return TestImageUtil();
} else {
return PicassoImageUtil();
}
}
}
Любые предложения?
обновление: в коде picasso, пытаясь использовать Executor
вместо ExecutorService
, я застрял на service.shutdown()
.
Я использовал 'IdlingResource' сделать API вызовы, но есть какой-то вопрос с' onClick' (не могу найти пост на SO больше ...) Очень хороший момент о потенциальном ANR! – mbmc
@eski обе ссылки мертвы –
@BenPearson Я исправил пикассо один (и вы исправили эспрессо один), спасибо! – eski