号外,Android 测试支持库(Android Testing Support Library( ATSL)) 1.0 版本发布啦,这个版本是对现有测试 API 的一个重要的更新,此版本不仅添加了许多新的特性同时也提升了性能和稳定性以及修复了一些 bug。它提供了跟已经被废弃的 Android 平台测试 API 完全相等价的 API。此版本还增加了支持多进程的 Expresso (MultiProcess Espresso) 和 Android Test Orchestrator。从 1.0 版开始将在 Google 的 Maven 中央仓库中发布版本,要了解有关使用此中央仓库的更多信息,请查看 Google Maven 中央仓库指南入门。另外Android 测试文档也有一些大的更新。把测试文档从 GitHub 网站迁移到了developers.android.google.cn/testing。
此版本的主要更新有如下几个方面:
- Espresso Improvements
Espresso 3.0.0 带来了一些很赞的新特性以及全面的性能提升。比较有亮点的几个新特性是:
Multiprocess Espresso
关于 Multiprocess Espresso 跟多信息可以查看原文或者官方文档, 以及官方示例。
Idling Registry
IdlingRegistry 是一个不会带来整个 Espresso 库的轻量级的注册表 (registry),因此你可以容易地在代码里注册资源。 当把 IdlingRegistry API 与 Multiprocess Espresso 结合时,可以在任何进程中通过代码来注册空闲资源。而 原有的 Espresso 的注册类现在已被弃用。
Idling Resources
在 Espresso 3.0.0 增加了新的资源包括:IdlingThreadPoolExecutor和IdlingScheduledThreadPoolExecutor。 在 Espresso contrib 包中的 CountingIdlingResource 类不再推荐使用并且已经在此版本中被移除。取而代之的是 Espresso Idling 包中的新版 CountingIdlingResource 类,完整的迁移详细信息可以查看官方的更新日志。
- ProviderTestRule
当你要测试 ContentProvider 对象时,现在可以使用ProviderTestRule 而不是ProviderTestCase2。 ProviderTestRule 提供了一种更简单的方法来处理 AndroidJUnit4 的测试规则。
ProviderTestRule 包括用于初始化的 API,以及针对 TestProvider 进行测试的命令。 如果您的ContentProvider 基于 SQLite 数据库,你可以使用 ProviderTestRule 命令设置数据库文件和初始化命令。
更多信息可以查看 ProviderTestRule 的使用文档。
Grant Permission Rule
在测试时使用 GrantPermissionRule 可以跳过运行时权限提示对话框,并且可以模拟用户为应用授予运行时权限。
- Android Test Orchestrator
通常情况下,AndroidJUnitRunner 会在相同的测试过程中运行所有测试,这可能会导致许多问题。 例如,测试在内存中共享其状态,如果一个测试崩溃,则会阻止测试套件的其余部分运行。使用新的 Android Test Orchestrator 可以在设备上实现完全测试隔离,如下图所示:
更多详细信息可以查看 Android Testing Orchestrator 开发者指南。
- AndroidJUnitRunner
- 可以使用 JUnitParams
- 可以配置类加载器(class loaders) 和可以使用运行器参数 (runner arguments) 自定义 JUnit 测试过滤器 (JUnit test filters)