【问题标题】:Testing android with Firebase使用 Firebase 测试安卓
【发布时间】:2018-02-01 15:54:44
【问题描述】:

我正在开发 Android 项目,前段时间我决定使用 Firebase,因为它似乎正是我想要的。确实它非常适合我的需求,但是依赖 Firebase 的测试功能对我来说是一场噩梦。没有官方模拟,所以我找到的唯一解决方案是创建 2 个 Firebase 项目(prod 和 dev 实例)并配置构建类型以针对不同的构建变体使用不同的项目。从技术上讲,它有效,但有一些缺点

  • 我的测试不再相互独立,因为它们共享相同的数据库和身份验证上下文。
  • 网络操作非常耗时。使用 Espresso 进行测试尤其困难,因为我不知道需要等待多长时间才能接收数据。
  • 在测试前后设置和清理环境很困难。
  • 异步方法不允许我为我的 DAO 对象创建方便的模拟,因为我无法将模拟数据提供给 ValueEventListener。

我不希望在这里找到灵丹妙药,但我确信我不是唯一一个在这些问题上苦苦挣扎的人,所以也许有人已经找到了至少绕过其中一些问题的方法?我也将不胜感激任何可以提供帮助的想法或链接。谢谢!

【问题讨论】:

    标签: android unit-testing firebase firebase-realtime-database android-espresso


    【解决方案1】:

    首先,standard and recommended practice 为不同的环境创建不同的项目,例如 dev 和 prod。

    如果您需要完全隔离您的测试,请查看Android Test Orchestrator

    让您的 Espresso 测试依赖于完成网络操作的特定时间通常是一种不好的做法。 Espresso 将等待您的 UI 更改以响应更改(onView 会这样做),因此 Espresso 测试应该由用户在 UI 中看到的内容驱动。

    您绝对可以模拟 Firebase API。您可能想在此处针对无法按您希望的方式运行的代码提出更具体的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-07
      • 1970-01-01
      • 1970-01-01
      • 2010-10-22
      • 2014-08-09
      • 1970-01-01
      相关资源
      最近更新 更多