我们非常高兴地宣布,Android 测试支持库 (ATSL) 1.0 版现已发布。

ATSL 1.0 版对现有测试 API 进行了重要更新,不仅添加了许多新功能、还提升了性能和稳定性,同时还修复了若干问题。它可提供齐全的 API,功能与现已弃用的 Android 平台测试 API 相当。此版本还添加了许多我们在  Google I/O 2017  论坛上讨论过的功能,如为  Multiprocess Espresso  和  Android Test Orchestrator  提供原生支持。

我们也非常高兴地宣布,从 1.0 版开始,我们将在 Google 的 Maven 代码库中分发版本,让您能够更轻松地使用 ATSL 进行构建。如需了解有关如何使用此代码库的更多信息,请参阅  Google Maven 代码库入门 指南。请注意,今后我们不再将测试基础设施更新与平台更新捆绑在一起。如果您尚未将您的测试升级至 ATSL,这次正是升级的绝佳机会。

最后,我们想要宣布对我们的 Android 测试文档进行的一项重大更新。我们已将旧测试文档从我们的  GitHub 网站 迁移至  developers.android.com/testing 。所有测试文档现在都显示在同一个位置,让您更容易了解如何在 Android 上编写和执行测试。

下面我们进入本博文的高潮部分,这一部分概要地介绍了我们将在此版本中提供的新 API 和工具。

Espresso 增强功能

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 及其用法的更多信息,请查看我们的 文档 和  Multiprocess 示例 。
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 空闲资源中。如需完整的迁移详细信息,请参阅我们的 版本说明 。

ProviderTestRule

现在,测试  ContentProvider  对象时,您可以使用  ProviderTestRule  替代  ProviderTestCase2ProviderTestRule  让您可以更轻松地使用 AndroidJUnit4 当前可用的其他测试规则。

ProviderTestRule  包括用于初始化的 API,以及针对正在测试的  ContentProvider  运行的命令。如果您的  ContentProvider  基于 SQLite 数据库,您可以使用用于设置数据库文件的  ProviderTestRule  命令和初始化命令。

如需了解更多信息,请查阅  ProviderTestRule  文档。

授予权限规则

Android M(API 级别 23)允许应用在运行时请求权限。不过,请求运行时权限的对话框将使测试进入无法继续的状态,从而导致测试失败。通过使用  GrantPermissionRule ,您可以跳过所有弹出对话框,并模拟用户为您的应用授予运行时权限。

Android Test Orchestrator

AndroidJUnitRunner 通常在同一个仪器进程中运行所有测试,这会导致许多问题。例如,这些测试会共享它们在内存中的状态,如果一个测试崩溃,它将阻止测试套件的其余测试运行。

尽管可以通过发起序列  adb  命令隔离测试,但此进程会增加主机端处理负载。通过改用全新的 Android Test Orchestrator,您可以在设备上实现完全的测试隔离,如下图所示:

请注意,如果您的测试  需要  传递共享状态,则协调器会导致它们失败。此行为是设计使然。截至本博文发布时,Android Test Orchestrator 已进入 Beta 测试阶段,可通过命令行使用。我们计划不久推出 Firebase Test Lab 和 Android Studio 集成。

如需了解详细信息,请参阅  Android Testing Orchestrator 开发者指南 。

AndroidJUnitRunner

AndroidJUnitRunner 现在包含许多附加功能:

  • 您可以使用 JUnitParams
  • 您可以使用运行器参数来配置类加载器和自定义 JUnit 测试过滤器。

有时,作为测试工作流程的一部分,您需要对您实时创建和配置的操作组件进行测试。现在,您可以使用一个  InterceptingActivityFactory  配置  MonitoringInstrumentation (并扩展到  AndroidJUnitRunner )。您可以使用一个特定于测试的配置创建要测试的操作组件,无需依赖编译时注入。

上面的概述仅重点介绍了我们对 ATSL 进行的一些最重要变更。此外,还有更多值得探索的变更。如需完整的版本详细信息,请参阅我们的 版本说明 。

最后,我们想感谢为此版本贡献功能的所有开发者。我们还要感谢来自 American Express、Slack 的移动工程团队的 Android 测试专家以及 GDE Chiu-Ki Chan,感谢他们与我们大力合作和针对 Android 测试支持库预发行版提供宝贵的反馈意见。

ATSL 团队祝您测试愉快!

原文链接

http://developers.googleblog.cn/2017/08/android-10.html

Android 测试支持库 1.0 现已发布!相关推荐

  1. android alpha不起作用,API 28(P)的Android设计支持库不起作用

    我已经成功配置了android-P SDK环境.当我尝试使用android设计支持库时,我遇到项目构建错误.项目配置为: IDE:3.2 Canary 17目标API:28编译API:28 apply ...

  2. Java APNS开源库apns4j-1.0.1发布

    Java APNS开源库apns4j-1.0.1发布 开源地址:https://github.com/teaey/apns4j maven依赖: <dependency><group ...

  3. 易语言java支持库用法,Java支持库2.0#0版

    资源介绍: 易语言Javalib.fne支持库中文名为易语言Java支持库,本易语言支持库使易语言具备了访问Java类库的能力."Java虚拟机"和"Java本地接口&q ...

  4. 网络与服务器编程框架库 acl_3.0.13 发布

    2019独角兽企业重金招聘Python工程师标准>>> acl 3.0.13 版本 (项目主页:https://sourceforge.net/projects/acl/,技术文章主 ...

  5. 网络与服务器编程框架库 acl_3.0.12 发布

    2019独角兽企业重金招聘Python工程师标准>>> acl 3.0.12 版本 (项目主页:https://sourceforge.net/projects/acl/,  技术文 ...

  6. pcmark2 android测试,PCMark推2.0新版 更加贴近日常应用测试

    原标题:PCMark推2.0新版 更加贴近日常应用测试 如同3DMark一样,PCMark也是知名评测软件厂商Futuremark推出的跨平台评测工具,但与侧重GPU性能的3DMark不同,PCMar ...

  7. Android 12开发者预览版现已发布,包含众多亮点,Android码农是如何进入腾讯的

    Android 12 将支持空间音频与MPEG-H,并为高达24个音频通道进行了优化(之前仅有8个).它还将使开发者更容易将「隆隆声」效果与音频联系起来. 谷歌似乎正在将注意力放在AV1图像文件格式( ...

  8. android sqlite orm,ioc,Afinal 0.2 发布 Android的快速开发框架(ORM,IOC)

    Afinal是一个开源的Android的orm和ioc应用开发框架,其特点是小巧灵活,代码入侵量少. 在android应用开发中,通过afinal的ioc框架,诸如ui绑定,事件绑定,通过注解可以自动 ...

  9. android v7支持库使用,正确引用 Android Support v7 兼容支持库

    这个问题昨天下午折腾了我老人家一下午,手动进行了各种组合,最终得以解决.现将步骤严格记录于此,以作备忘. 一.环境及前提 1.Windows 7/Mac OS X 10.9: 2.Eclipse 4. ...

最新文章

  1. 软件测试技术学什么条件,软件测试从业者需要具备哪些技能
  2. cubase怎么添加midi设备_WIDI MASTER:5针无线蓝牙MIDI适配器
  3. 编程心得体会_生信编程语言的经验之谈
  4. 【Oracle】数据迁移工具(2):Data Dump
  5. 怎么把录音导入库乐队_库乐队导入电脑版 苹果库乐队怎么导入歌
  6. 萤石开放平台的二次开发——设备如何上云
  7. 定时获取AccessToken——萤石开放平台
  8. 数据挖掘-贡献度分析
  9. 开源组件安全漏洞检测主流工具对比
  10. 居家第二十六天烤鸡翅
  11. python第六、七天作业
  12. Riverbed未来要往哪里去?收购Ocedo让你一目了然
  13. 「运维有小邓」搜索日志数据以作为网络安全情报
  14. python创建excel图表_用python在Excel中创建图表
  15. 【Devc++】战斗1.0.1
  16. C语言:goto循环语句
  17. 硝基苯并-2-氧杂-1,3二唑(Nitrobenz-2-oxa-1,3-diazole,NBD)修饰BODIPY荧光探针检测GSH
  18. 基于linux pdftotxt工具 进行pdf转txt
  19. afaca 分析报告
  20. mac日常使用小技巧

热门文章

  1. MySQL中用户授权/删除授权的方法
  2. .htaccess的基本作用及相关语法介绍
  3. POJ - 1050 To the Max(最大连续子段和,线性dp)
  4. 中石油训练赛 - 围栏翻新(思维+贪心+差分)
  5. html5 将id的值用于top_web前端分享HTML5常见面试题集锦四
  6. 数据科学竞赛-计算机视觉赛流程
  7. python支持的编程范式有_【Python学习手册】chapter1 前面
  8. 【数据结构】图的应用(普利姆算法、克鲁斯卡尔算法、迪杰斯特拉算法、弗洛伊德算法、拓扑排序)
  9. Min_25筛学习Tip+链接
  10. 针对某游戏保护DebugPort清零的一次逆向