Espresso with Firebase - 异步加载

Espresso with Firebase - async loading

拥有基于 firebase DB 的应用程序 - 通过 Firebase 回调异步加载项(例如,加载到 RecyclerView 中) - 我们如何定义 Espresso 检查

使用自定义 IdlingResource 似乎有问题,因为 ChildEventListeneronChildAdded 回调不会告诉我们给定的 child 是否是最后一个(或者它?)。

有没有办法判断 Firebase 何时 "idle"?

随时考虑 "idle" 是否可能违背 Firebase 的精神?

那也许我们可以定义"locally idle"?这意味着没有 本地 发起的请求回调(以获取初始项目)正在等待中......(与随时来自网络的新内容相反)。

测试应该是封闭的:您不应该依赖外部数据源。

创建一种产品风格,将 Firebase 数据源替换为仅用于测试的虚假数据源。这使您可以使用虚假数据进行测试,以进行可重复的测试。

这个概念在Leveraging product flavors in Android Studio for hermetic testing

中有解释

并在 Android Architecture Blueprints

中实施

需要注意的是,您不会测试 Firebase 与您的应用程序之间的集成,但这些测试往往是 flaky