espresso 相对于仪器测试用例的优势

Advantages of espresso over instrumentation test cases

我已经经历了浓缩咖啡的 doc,但仍然没有得到它的好处,所以我可以转向浓缩咖啡而不是仪器。有人可以帮忙吗?

我从浓缩咖啡中了解到的是:

  1. 使用 Espresso 的一个主要好处是它提供了测试操作与您正在测试的应用程序的 UI 的自动同步。
  2. Espresso 会检测主线程何时空闲,因此它能够 运行 在适当的时间执行您的测试命令,从而提高测试的可靠性。
  3. 此功能还使您不必在测试代码中添加任何时序解决方法,例如 Thread.sleep()

在第 1 点,我无法了解它是如何在执行操作时保持同步的。

第 2 点线程如何变为空闲以及我们如何避免 Thread.sleep() espresso 等待元素直到它不显示在屏幕上。

请建议我应该如何处理它。谢谢

but still not getting the benefits of it so that I can move to espresso over instrumentation

我认为你在这里混淆了一些东西:

Instrumentation-Test 不是必需的,这意味着您必须使用 espresso.

通常 Instrumented Tests 是这样的测试:

...can take advantage of the Android framework APIs and supporting APIs, such as the Android Testing Support Library. Source

这意味着您可以编写 "classic" 单元测试或检测单元测试,例如需要 android 上下文到 运行 的单元测试。单元测试是测试代码的单个部分的测试,例如服务之类的。

另一方面,

UI tests 是真正启动您的 activity 并在您的应用程序中执行某些操作的测试。

Espresso 本身只是一个帮助您编写自动化 UI 测试的库。您可以使用它在您的应用程序中与 UI 进行交互(单击按钮、检查视图内容,...)。

此外还有 ui-automator library 可以做类似的事情,但用于 UI 不在您的应用程序内的交互,例如系统对话框(权限对话框、最近的应用程序或主页按钮,...)或者如果您有跨越多个应用程序的测试用例。

所以回答你的问题:你不能 "favor" espresso 超过仪器测试,因为 espresso 是一个用于自动化仪器测试的库。