BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

谷歌开源针对iOS的可访问性测试框架

| 作者 Sergio De Simone 关注 18 他的粉丝 ,译者 张卫滨 关注  他的粉丝 发布于 2018年4月11日. 估计阅读时间: 4 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料!

谷歌GTXiLib是针对iOS的可访问性自动化测试框架,现在它已经基于Apache许可证开源。GTXiLib是使用Objective-C编写的,并且能够与Xcode的单元测试基础设施进行集成。

GTXiLib与Xcode的集成是通过XCTest单元测试框架实现的。我们可以为任意的测试类安装GTXiLib,并注册一系列在执行单元测试时希望一起执行的可访问性检查。如果有可访问性失败的话,对应的单元测试也会失败。

GTXiLib目前所支持的可访问性检查致力于确保按钮上都存在文本、标签的文本没有标点、可点击区域至少有一个最小的空间并且文本有足够的高度。

GTXiLib还为开发人员提供了构建自定义检查的方式,这是通过checkWithName:block: API来实现的。如下就是一个简单版本的可访问性检查,它会确保某个元素上存在一个标签:

  id check = [GTXCheckBlock GTXCheckWithName:"LabelMustBePresent"
                                   block:^BOOL(id element, GTXErrorRefType errorOrNil) {
    NSError *error;
    id accessibilityLabel = [element accessibilityLabel];
    if (![accessibilityLabel isKindOfClass:[NSString class]]) {
        *errorOrNil = // set error;
      }
      // Fail
      return NO;
    }
    return NO;
  }];

在实现上,低层级的可访问性检查是通过苹果自身的UIAccessibility框架来完成的,以上面的例子来说明,在这里使用了accessibilityLabel。但是,GTXiLib并不局限于只使用UIAccessibility方法,在它们的内部运行中,可以使用任意可用的框架。

要为测试类安装GTXiLib,只需要在它的+setup方法添加如下这样代码即可:

+ (void)setUp {
  [super setUp];
  // ...其他的setup代码(如果有的话)放到这里
  // 将GTX安装到*this*测试类的所有测试中
  [GTXiLib installOnTestSuite:[GTXTestSuite suiteWithAllTestsInClass:self]
                       checks:[GTXChecksCollection allGTXChecks]
            elementBlacklists:@[]];
}

通过这种方式,在这个测试类中所定义的每个单元测试都会进行可访问性检查。如果你想要在可访问性检查中排除一些UI元素的话,那么可以将它们放到elementBlackLists数组中。如果你想要对已有的代码库重构可访问性测试的话,这会非常有用,因为这样可以将无法控制的或者稍后某个时间点才能修正的元素排除在外。

GTXiLib是基于XCTest的,这意味着它能够与任意基于XCTest的框架兼容,比如Google自己的UI自动化测试框架EarlGrey

借助cocoapods,GTXiLib能够非常容易地添加到项目之中。

查看英文原文Google Open Sources Accessibility Test Framework for iOS

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT