Picasso使用线程在后台加载图像。即使从资产中加载,也会有轻微的延迟,直到它显示出来,这会导致图片在spoon捕获时不出现。我可以在测试中添加1秒的休眠时间,但我想知道是否有更好的方法。
我尝试设置一个Downloader或RequestHandler以同步返回图像,但我认为我需要设置一个使用主线程或AsyncTask(这样espresso就会等待)的ExecutorService。对于retrofit,我们可以使用AsyncTask.THREAD_POOL_EXECUTOR和MainThreadExecutor,但我不确定如何在picasso中实现。
作为一种解决方法,我将picasso包装在ImageUtil中,在仪器测试期间不使用它。
我尝试设置一个Downloader或RequestHandler以同步返回图像,但我认为我需要设置一个使用主线程或AsyncTask(这样espresso就会等待)的ExecutorService。对于retrofit,我们可以使用AsyncTask.THREAD_POOL_EXECUTOR和MainThreadExecutor,但我不确定如何在picasso中实现。
作为一种解决方法,我将picasso包装在ImageUtil中,在仪器测试期间不使用它。
DebugModule {
@Provide
ImageUtil imageUtil() {
if (isTest) {
return TestImageUtil();
} else {
return PicassoImageUtil();
}
}
}
有什么建议吗?
更新:在 Picasso 的代码中,尝试使用 Executor
而不是 ExecutorService
,我卡在了 service.shutdown()
上。
IdlingResource
来进行API调用,但是在onClick
方面出现了一些问题(现在在SO上找不到这篇文章了...)。非常好的一点是提到了潜在的ANR问题! - mbmc