我在我的应用程序中使用了MVVM架构和Dagger 2。我有一个从服务器获取数据的存储库,当数据被检索时,ViewModel通知LiveData观察者,后者从我的活动中调用updateUI()
方法。
所以,当我测试用espresso可以看到哪些视图时,我想等到updateUI()
被调用。我无法轻松地模拟ViewModel,因为我使用的是Dagger 2,但除此之外,它是一个集成测试,我不想从一开始就这么做。
对于这一点,Thread.sleep()
将是一个糟糕而天真的解决方案,因为等待时间太短会导致测试失败,过多的等待时间会导致宝贵时间的损失,而且它还取决于测试和网络环境!
那么我们在这里做什么,这个问题的最佳解决方案是什么?
发布于 2019-10-12 17:57:02
经过更多的研究,我发现Espresso已经有了一个解决这个问题的方法,叫做闲置资源。
您可以从下面的列表中选择合适的空闲资源实现来将其集成到您的应用程序中。
您可以在应用程序中使用它,方法是将它添加到您的Gradle文件中,如下所示:
def espresso_version = '3.2.0'
androidTestImplementation "androidx.test.espresso:espresso-core:$espresso_version"
implementation "androidx.test.espresso:espresso-idling-resource:$espresso_version"
请注意,更新的Espresso版本可以在Google的Maven Repository上找到。
https://stackoverflow.com/questions/58359589
复制相似问题