1. 程式人生 > >Rxjava + Room java.lang.AssertionError: No values (latch = 1, values = 0, errors = 0, completions =

Rxjava + Room java.lang.AssertionError: No values (latch = 1, values = 0, errors = 0, completions =

Rxjava + Room java.lang.AssertionError: No values (latch = 1, values = 0, errors = 0, completions = 0)

出錯:Insert資料後去Query資料
原因:Rx和Junit 不在一個執行緒裡,insert需要時間,Query沒等insert成功就查資料,所以錯誤

Schilder 還不能幫你把執行緒切換到JUnitThread,或者說比較麻煩,這裡我們只需要加上這個就能指定在一個執行緒裡

@Rule
    public InstantTaskExecutorRule instantTaskExecutorRule = new
InstantTaskExecutorRule();


要新增依賴

    androidTestCompile "android.arch.core:core-testing:1.1.1"

這個錯拋在RX的BeseTestConsumer assertValueAt() ,原因是沒有查到資料,但是呼叫了assertValueAt 所以報一個沒找資料的異常