可能爲時已晚,但您應該查看一下espresso閒置資源,以將您的背景加載任務與espresso同步。您不需要更改任何應用程序代碼。在這裏,你必須在Android定製空轉資源更深入的瞭解:http://dev.jimdo.com/2014/05/09/wait-for-it-a-deep-dive-into-espresso-s-idling-resources/ 或本http://blog.sqisland.com/2015/04/espresso-custom-idling-resource.html
這裏是我做的,使咖啡等待(從數據從網絡正在添加)運行UI測試之前填充我的名單。
public class ListResultsIdlingResource implements IdlingResource {
private ResourceCallback callback;
private RecyclerView mRecyclerListings;
public ListResultsIdlingResource(RecyclerView recyclerListings) {
mRecyclerListings = recyclerListings;
}
@Override
public boolean isIdleNow() {
if (mRecyclerListings != null && mRecyclerListings.getAdapter().getItemCount() > 0) {
if (callback != null) {
callback.onTransitionToIdle();
}
return true;
}
return false;
}
@Override
public void registerIdleTransitionCallback(ResourceCallback callback) {
this.callback = callback;
}
@Override
public String getName() {
return "Recycler idling resource";
}
你一定要檢查您的列表中有你isIdleNow()方法的項目在其元件上運行的UI測試之前。
然後在您的設置方法的espresso測試類中註冊空閒資源,並將它傳遞給您的ListView或Recyclerview或您用作列表的任何視圖的引用。
@Before
public void setUp() throws Exception {
Intent intent = createIntentForActivity();
activityRule.launchActivity(intent);
mActivity = activityRule.getActivity();
mListResultsIdlingResource = new ListingResultsIdlingResource(
(RecyclerView) mActivity.findViewById(R.id.recycler_view));
registerIdlingResources(mListResultsIdlingResource);
}
希望這對任何尋找此問題的人都有幫助。