Espresso 3.0.0 带来了出色的新功能,并提升了整体性能。其中的一些亮点包括:Multiprocess Espresso、Idling Registry 和新的 Idling Resources。下面,我们更详细地介绍一下这些新功能:
Multiprocess Espresso
从 Android O 开始,此平台将包含对在您的应用默认进程之外进行仪器测试的支持。(在 Android O 之前,您只能在应用默认进程中测试应用组件。)Multiprocess Espresso 实现了这一支持。它允许您无缝测试跨进程界限的应用界面交互,同时仍可保证 Espresso 同步。
好消息是,Espresso 可执行上述所有工作;您不必针对多进程对界面设置进行任何更改。您可以继续像为单进程应用编写测试一样为多进程编写 Espresso 测试,Espresso 将自动处理进程间通信 (IPC) 和进程间同步。
下图展示了 Espresso 的多个实例如何相互通信:
如需了解有关 Multiprocess Espresso 及其用法的更多信息,请查看我们的文档:
https://developer.android.google.cn/training/testing/espresso/multiprocess.html
Multiprocess 示例:
https://github.com/googlesamples/android-testing/tree/master/ui/espresso/MultiProcessSample
Idling Registry
有些应用使用 Gradle 中的构建风味或依赖注入框架(如 Dagger)来生成注册空闲资源的测试构建配置。其他应用只是通过其操作组件公开空闲资源。所有这些方法都存在一个问题,即它们会增加开发工作流程的复杂性,其中有些方法甚至会破坏封装。借助最新版本的 Espresso,通过引入新的 IdlingRegistry API,让您可以更轻松地在应用代码中注册空闲资源。IdlingRegistry 是一个轻量型注册表,它不会引入完整的 Espresso 库,因此,您可以更轻松地从您的应用代码注册资源。将此 API 与 Multiprocess Espresso 结合使用时,您可以在应用代码中注册来自任何进程的空闲资源。
Espresso 类的注册现已弃用。
Idling Resources
编写自定义空闲资源非常耗时,因此,Espresso 3.0.0 现在附带了更多可以直接使用的空闲资源,以同步您的线程。新资源包括:IdlingThreadPoolExecutor 和 IdlingScheduledThreadPoolExecutor。我们还将提供更多资源!
要利用新的空闲资源,请将以下新的依赖项添加到 build.gradle 文件:
androidTestCompile "com.android.support.test.espresso.idling:idling-concurrent:3.0.0"
此外,之前在 Espresso contrib 中弃用的 CountingIdlingResource 已在此版本中移除。因此,您需要更新您的测试以使用新的 CountingIdlingResource 软件包,其位于 Espresso 空闲资源中。如需完整的迁移详细信息,请参阅我们的版本说明:
https://developer.android.google.cn/topic/libraries/testing-support-library/release-notes.html