在我的测试中,我有以下代码:
/* two users written to realm here, verified */
TestSubscriber<RealmResults<User>> testSubscriber = new TestSubscriber<>();
usersByQuery(getRealm().where(User.class))
.filter(RealmResults::isLoaded)
.subscribe(testSubscriber);
/*
.subscribe(users1 -> {
assertTrue("Users are not two, found instead: " + users1.size(), users1.size() == 2);
Log.d("Another test", "" + users1.size() + " users on thread: " + Thread.currentThread().getName());
});
*/
try {
Log.d("Test", "Sleeping on " + Thread.currentThread().getName() + "\n");
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
testSubscriber.assertValueCount(1);
测试将失败:
java.lang.AssertionError:onNext事件的数量不同;预期:1, 实际:0
如果我用注释的subscribe替换testSubscriber并删除测试订阅者断言,它将传递并输出:
D /测试:睡在mainD /另一个测试:线程上有2个用户:主
我不明白为什么TestSubscribers OnNext
在另一个人不会被调用的时候。我想使用测试用户,因此我可以用Thread.sleep
替换awaitValueCount
块。