Espresso with Firebase - 异步加载
Espresso with Firebase - async loading
拥有基于 firebase DB 的应用程序 - 通过 Firebase 回调异步加载项(例如,加载到 RecyclerView 中) - 我们如何定义 Espresso 检查?
使用自定义 IdlingResource
似乎有问题,因为 ChildEventListener
的 onChildAdded
回调不会告诉我们给定的 child 是否是最后一个(或者它?)。
有没有办法判断 Firebase 何时 "idle"?
随时考虑 "idle" 是否可能违背 Firebase 的精神?
那也许我们可以定义"locally idle"?这意味着没有 本地 发起的请求回调(以获取初始项目)正在等待中......(与随时来自网络的新内容相反)。
测试应该是封闭的:您不应该依赖外部数据源。
创建一种产品风格,将 Firebase 数据源替换为仅用于测试的虚假数据源。这使您可以使用虚假数据进行测试,以进行可重复的测试。
这个概念在Leveraging product flavors in Android Studio for hermetic testing
中有解释
并在 Android Architecture Blueprints
中实施
需要注意的是,您不会测试 Firebase 与您的应用程序之间的集成,但这些测试往往是 flaky。
拥有基于 firebase DB 的应用程序 - 通过 Firebase 回调异步加载项(例如,加载到 RecyclerView 中) - 我们如何定义 Espresso 检查?
使用自定义 IdlingResource
似乎有问题,因为 ChildEventListener
的 onChildAdded
回调不会告诉我们给定的 child 是否是最后一个(或者它?)。
有没有办法判断 Firebase 何时 "idle"?
随时考虑 "idle" 是否可能违背 Firebase 的精神?
那也许我们可以定义"locally idle"?这意味着没有 本地 发起的请求回调(以获取初始项目)正在等待中......(与随时来自网络的新内容相反)。
测试应该是封闭的:您不应该依赖外部数据源。
创建一种产品风格,将 Firebase 数据源替换为仅用于测试的虚假数据源。这使您可以使用虚假数据进行测试,以进行可重复的测试。
这个概念在Leveraging product flavors in Android Studio for hermetic testing
中有解释并在 Android Architecture Blueprints
中实施需要注意的是,您不会测试 Firebase 与您的应用程序之间的集成,但这些测试往往是 flaky。