是否可以在 Android 中使用 Espresso 执行端到端测试?
Is it possible to perform end to end testing with Espresso in Android?
在过去的一周里,我一直在寻找有关 Android 端到端测试的有用信息。虽然我找到了 UI Automator,但它并没有引起我的注意。
我正在开发一个应用程序,它的快乐路径包含 6 个活动。我想在主屏幕中创建我的 Booking 对象并将其移过快乐路径以检查其状态。我想我可以用 MockWebServer 模拟服务器响应。我看到的所有样本一次都在测试一个 activity。
所以我的问题是我能否在一次测试中测试所有这些活动(快乐之路)?如果是,有没有样本?
Espresso 应该能够处理多项活动。但是当你说端到端测试时,你想把应用程序当作一个黑盒子,运行 一个独立的测试框架来对抗它?
在那种情况下,Espresso 似乎不是解决方案,尽管您肯定可以用它来通过许多不同的活动来锻炼您的快乐之路。
简短的回答是肯定的。 Espresso 非常适合测试单个应用程序中活动之间的交互。
UI Automator 用于测试多个应用程序的交互。例如,如果您的应用程序使用相机,UI Automator 非常适合测试您的应用程序与相机之间的交互。不利的一面是,纯粹的 UI Automator 测试对您的应用程序的内部运作一无所知。它可以根据视图层次结构搜索视图,但不知道资源 ID 等。
另一方面,Espresso 可以根据视图的 ID 和您应用中可用的其他属性来查找视图。它可以单击一个按钮或另一个启动另一个 activity 的视图,然后与那个 activity 交互。 Espresso 只能使用您自己应用中的视图。
Espresso 和 UIAutomator 可以一起使用。您可以使用 UI Automator 向另一个应用程序(例如相机)启动 Intent 并与之交互。当执行流 returns 到您自己的应用程序时,您可以使用 Espresso 检查结果。即使是在您自己的应用程序中进行测试,我发现来自 UI Automator 的 UiDevice class 可以方便地操纵设备,例如导致方向改变。
在过去的一周里,我一直在寻找有关 Android 端到端测试的有用信息。虽然我找到了 UI Automator,但它并没有引起我的注意。
我正在开发一个应用程序,它的快乐路径包含 6 个活动。我想在主屏幕中创建我的 Booking 对象并将其移过快乐路径以检查其状态。我想我可以用 MockWebServer 模拟服务器响应。我看到的所有样本一次都在测试一个 activity。
所以我的问题是我能否在一次测试中测试所有这些活动(快乐之路)?如果是,有没有样本?
Espresso 应该能够处理多项活动。但是当你说端到端测试时,你想把应用程序当作一个黑盒子,运行 一个独立的测试框架来对抗它?
在那种情况下,Espresso 似乎不是解决方案,尽管您肯定可以用它来通过许多不同的活动来锻炼您的快乐之路。
简短的回答是肯定的。 Espresso 非常适合测试单个应用程序中活动之间的交互。
UI Automator 用于测试多个应用程序的交互。例如,如果您的应用程序使用相机,UI Automator 非常适合测试您的应用程序与相机之间的交互。不利的一面是,纯粹的 UI Automator 测试对您的应用程序的内部运作一无所知。它可以根据视图层次结构搜索视图,但不知道资源 ID 等。
另一方面,Espresso 可以根据视图的 ID 和您应用中可用的其他属性来查找视图。它可以单击一个按钮或另一个启动另一个 activity 的视图,然后与那个 activity 交互。 Espresso 只能使用您自己应用中的视图。
Espresso 和 UIAutomator 可以一起使用。您可以使用 UI Automator 向另一个应用程序(例如相机)启动 Intent 并与之交互。当执行流 returns 到您自己的应用程序时,您可以使用 Espresso 检查结果。即使是在您自己的应用程序中进行测试,我发现来自 UI Automator 的 UiDevice class 可以方便地操纵设备,例如导致方向改变。