android - 是否可以在 Android 中使用 Espresso 进行端到端测试?

标签 android android-espresso android-instrumentation

在过去的一周里,我一直在寻找有关 Android 端到端测试的有用信息。虽然我找到了 UI Automator,但它并没有引起我的注意。

我正在开发一个应用程序,它的快乐路径包含 6 个 Activity 。我想在主屏幕中创建我的 Booking 对象并将其移动到快乐的路径以检查其状态。我想我可以用 MockWebServer 模拟服务器响应.我看到的所有样本都在一次测试一项 Activity 。

所以我的问题是我能够在一次测试中测试所有这些 Activity (快乐路径)吗?如果是,是否有任何样本?

最佳答案

简短的回答是肯定的。 Espresso 非常适合测试单个应用程序中 Activity 之间的交互。

UI Automator 旨在测试多个应用程序的交互。例如,如果您的应用程序使用相机,那么 UI Automator 非常适合测试您的应用程序和相机之间的交互。缺点是纯 UI Automator 测试对应用程序的内部工作一无所知。它可以根据 View 层次结构搜索 View ,但不了解资源 ID 等。

另一方面,Espresso 可以根据 View 的 id 和您应用中可用的其他属性来查找 View 。它可以单击一个按钮或另一个 View 来启动另一个 Activity ,然后与该 Activity 进行交互。 Espresso 只能与您自己的应用程序中的 View 一起使用。

Espresso 和 UI Automator 可以一起使用。您可以使用 UI Automator 向另一个应用程序(例如相机)启动 Intent 并与之交互。当执行流程返回到您自己的应用程序时,您可以使用 Espresso 检查结果。即使是在您自己的应用程序中进行测试,我也发现 UI Automator 中的 UiDevice 类可以方便地操作设备,例如导致方向更改。

关于android - 是否可以在 Android 中使用 Espresso 进行端到端测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35397204/

相关文章:

android - YouTube Api - 无法搜索 : com. google.api.client.googleapis.json.GoogleJsonResponseException:403 禁止

android - 房间持久性库 : Cannot resolve symbol Room

android - 显示提示以了解位置

android - 如何在 Android Espresso 中调用其他测试类?

android - AndroidJUnitRunner 和 AndroidJunit4 有什么区别?

android - Android 是否支持 RTP/AVP/TCP?

android - Espresso : how to click one of image in listview?

java - 检查 AlertDialog 的标题和消息

android - 使用命令提示符运行带参数的 Instrumented Test

android-testing - 在 InstrumentationTestCase 运行之间重置应用程序状态