【问题标题】:What is the AndroidX.Test Framework and how does it affect my unit/robolectric/espresso tests?什么是 AndroidX.Test 框架,它如何影响我的单元/robolectric/espresso 测试?
【发布时间】:2023-03-12 07:00:01
【问题描述】:

我在 Android 文档中浏览了Test Android Apps。谷歌引入了 AndroidX 测试,但我仍然对它的含义感到非常困惑。

我正在使用带有 ViewModel、LiveData 的 MVVM Android 架构组件。

我需要使用 Android X 框架的哪些部分?

视图(Activity.Fragments)--> Espresso?

ViewModel(with LiveData) --> RoboElectric?

模型 --> JUnit 还是 RoboElectric?

为什么 Google 仍然用很多库让我们感到困惑,为什么他们不能将所有本地测试、仪器测试和所有东西都移动到同一个框架(Espresso)下?

【问题讨论】:

  • 嗯,AndroidX 旨在遵循在编写应用程序和测试时吸取的多年经验教训,我猜它与生态系统的其他部分集成......你的问题必须问到实际情况Android 测试团队,不过
  • 你有没有尝试过任何测试?如果遇到任何问题,那么也许您可以分享它们并可能得到一些好的解决方案。

标签: android android-espresso android-testing androidx


【解决方案1】:

Google 测试团队对其测试框架 AndroidX 进行了许多改进。

为什么谷歌仍然对很多库感到困惑,为什么他们不能移动所有本地测试,仪器在同一个框架(Espresso)下测试所有东西?

通过 AndroidX Test,他们实际上正在尝试解决这个问题!

首先,常规的“Junit”单元测试没有改变。您应该像以前一样在 JVM 上测试您的 java 代码。

但是现在,借助 AndroidX,他们使 Robolectric 4.0 API 与 Espresso 的 API 相同,因此现在可以将 Espresso 测试作为 Robolectric 测试运行。这意味着在本地开发时,您可以更快地迭代,因为仪器测试可以运行得更快,而不必在模拟器上运行。它还使学习 Robolectric 变得更加容易,因为您可以使用与 espresso 相同的 API。

当您进入 PR 或 CI 阶段时,您可以提交 那些在 Robolectric JVM 上运行的相同测试,以便在使用 Espresso 的真实设备上运行您的 CI。

我建议查看Testing Rebooted (with AndroidX Test) (Android Dev Summit '18) 了解更多信息。

在这张图片中,失败的 UI 和单元测试将表示相同的测试,但表示为 Espresso/Robolectric Instrumentation Test,具体取决于您要运行的内容和时间。为清楚起见,当您进行本地开发时,尤其是使用 TDD 时,您可能希望将其作为 Robolectric 运行。准备好提交 PR 后,您可以使用模拟器或真实设备在 CI 上运行相同的测试。

因此,虽然 AndroidX.test 可能会令人困惑,但我建议观看此视频以进一步了解 Google 对该框架的意图。

另外,我同意他们可以提供更多关于使用新 Androidx.Test 的示例和指导!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    相关资源
    最近更新 更多