2016-04-07 24 views
1

我想驗證在片段中繪製的按鈕的存在。該按鈕的可見性和存在取決於使用Retrofit進行的網絡調用/響應。等待在Espresso測試中依賴於網絡呼叫的按鈕

由於異步性,我認爲我應該去IdlingResource。我的問題是,我真的不知道什麼是trueisIdleNow()的好方法。我是否應該試圖通過findElementById(R ..)來獲得元素的持有或者是否存在其他一些典型的「Espresso方式」來執行這些等待斷言?

編輯:

目前的解決方案是簡單地不IdlingResource:

while (timeout-- > 0) { 
    try { 
     onView(withId(element)).check(matches(isDisplayed())); 
    } catch (AssertionError ae) { 
     MiscUtil.sleep(1000); 
     continue; 
    } 
    return true; 
} 

但我想這是不是根據基本面咖啡。由於某種原因,執行來自IdlingResource實施的檢查匹配調用會暫停所有線程。

回答

1

如果您使用的改造,我會想你正在使用OKHttp如果沒有,那麼答案將是類似

(你只需要編寫一個怠速資源爲您的網絡運營。)

如果使用OKHttp有一個很好的在這裏框空閒資源: https://github.com/JakeWharton/okhttp-idling-resource

在測試的設置只是注入你okhttp客戶端(如果你使用匕首),註冊資源(不要忘記在推倒註銷)。

而你的按鈕的可見性和顯示將自動神奇地等待。

附註: 當涉及動畫您的意見,他們是你的儀器測試中最大的敵人,請務必關閉動畫(特別是如果你以自定義的方式完成它們,你需要找到一種方法來禁用它們在測試運行期間)。