使用命令行工具运行Xcode 7 UI Tests
原文:Run Xcode 7 UI Tests from the command line
苹果在Xcode 7中引入了一项新技术UI Tests,允许开发者使用Swift或Objective C代码来进行UI测试。直到现在一个可行的方法是使用UI Automation。通过UI Tests,可使用Xcode适当调试问题以及使用Swift或Objective C而无需处理JavaScript代码。
首先为UI Tests创建一个新的target:

在测试分区下,选中Cocoa Touch UI Testing Bundle:

现在打开Project UI Tests文件夹中最新创建的Project_UI_Tests.swift文件。在底部你会有一个名为testExample的空方法。注意看图中的光标,并点击底部红色的记录按钮。

这样就会打开你的app。现在你可以四处点击下,并与你的应用程序进行交互。完成后,再次点击红色录制按钮。

生成的代码类似下边的记录。我已经在生成的代码行之间添加了几个示例XCTAsserts。在Xcode中使用CMD + U即可运行你的应用程序,并且是同时运行单元测试和UI Tests。
现在你已经可以使用CLI运行测试了,无需进一步的调整,不过我们想让UI Tests在一个单独的scheme中,点击scheme并选中New Scheme:

选中最新创建的UI Test target并确认。

如果你计划在CI-server上运行测试,请确保最新创建的scheme已经启用了Shared选项。点击scheme并选择Manage Schemes来打开会话。
从CLI打开测
|
1
2
3
4
5
|
xcodebuild -workspace App.xcworkspace \ -scheme "SchemeName" \ -sdk iphonesimulator \ -destination 'platform=iOS Simulator,name=iPhone 6,OS=9.0' test |
明确所用Xcode的版本非常重要,我们使用的是最新的测试版本:
|
1
|
export DEVELOPER_DIR="/Applications/Xcode-beta.app" |
你甚至可以将测试版作为你新的默认运行版本:
|
1
|
sudo xcode-select --switch "/Applications/Xcode-beta.app" |
UI测试运行时终端输出示例:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
Test Suite 'All tests' started at 2015-06-18 14:48:42.601Test Suite 'TempCam UI Tests.xctest' started at 2015-06-18 14:48:42.602Test Suite 'TempCam_UI_Tests' started at 2015-06-18 14:48:42.602Test Case '-[TempCam_UI_Tests.TempCam_UI_Tests testExample]' started.2015-06-18 14:48:43.676 XCTRunner[39404:602329] Continuing to run tests in the background with task ID 1 t = 1.99s Wait for app to idle t = 2.63s Find the "toggleButton" Switch t = 2.65s Tap the "toggleButton" Switch t = 2.65s Wait for app to idle t = 2.66s Find the "toggleButton" Switch t = 2.66s Dispatch the event t = 2.90s Wait for app to idle t = 3.10s Find the "toggleButton" Switch t = 3.10s Tap the "toggleButton" Switch t = 3.10s Wait for app to idle t = 3.11s Find the "toggleButton" Switch t = 3.11s Dispatch the event t = 3.34s Wait for app to idle t = 3.54s Find the "toggleButton" Switch t = 3.54s Tap the "MyButton" Button t = 3.54s Wait for app to idle t = 3.54s Find the "MyButton" Button t = 3.55s Dispatch the event t = 3.77s Wait for app to idle t = 4.25s Tap the "Okay" Button t = 4.25s Wait for app to idle t = 4.26s Find the "Okay" Button t = 4.28s Dispatch the event t = 4.51s Wait for app to idle t = 4.51s Find the "toggleButton" SwitchTest Case '-[TempCam_UI_Tests.TempCam_UI_Tests testExample]' passed (4.526 seconds).Test Suite 'TempCam_UI_Tests' passed at 2015-06-18 14:48:47.129. Executed 1 test, with 0 failures (0 unexpected) in 4.526 (4.527) secondsTest Suite 'TempCam UI Tests.xctest' passed at 2015-06-18 14:48:47.129. Executed 1 test, with 0 failures (0 unexpected) in 4.526 (4.528) secondsTest Suite 'All tests' passed at 2015-06-18 14:48:47.130. Executed 1 test, with 0 failures (0 unexpected) in 4.526 (4.529) seconds** TEST SUCCEEDED ** |
生成截图
无需额外的工作,可轻轻松得到截图。可为命令添加derivedDataPath选项,你可以告诉Xcode在什么地方储存测试结果,包括生成的截图。
|
1
2
3
4
5
6
|
xcodebuild -workspace App.xcworkspace \ -scheme "SchemeName" \ -sdk iphonesimulator \ -destination 'platform=iOS Simulator,name=iPhone 6,OS=9.0' -derivedDataPath './output' test |
Xcode会自动为每个测试操作生成截图,关于生成数据的更多信息,可查看Michele写的Test Logs in Xcode.

下一步
想要为多种语言和多种设备类型创建截图,你可能会需要像snapshot这样的工具,snapshot使用UI Automation, 不过现在已经弃用了。我目前用的是最新版的snapshot,可充分利用新UI Tests的功能,这样如果程序出错,那snapshot能展示更多细节结果和错误信息。
使用命令行工具运行Xcode 7 UI Tests的更多相关文章
- dedecms:织梦文章如何添加“自定义属性”标签(sql命令行工具)
dede织梦如何添加“自定义属性”标签“症状” 1.进入后台——系统——SQL命令行工具——运行SQL命令行,添加arcatt表字段: insert into`dede_arcatt`(sortid, ...
- Scrapy命令行工具简介
Windows 10家庭中文版,Python 3.6.4,virtualenv 16.0.0,Scrapy 1.5.0, 在最初使用Scrapy时,使用编辑器或IDE手动编写模块来创建爬虫(Spide ...
- Xcode 命令行工具 Command Line Tools
xcode命令行工具包是一个小型独立包,可供下载独立于Xcode的和允许您执行命令行开发OS X. 在OS X10.9,就以及没有clt的下载安装包了,需要使用命令在线安装. xcode-select ...
- 从命令行模式运行Windows管理工具。
从命令行模式运行Windows管理工具. 分类: Play Windows 2004-08-06 16:39 6076人阅读 评论(3) 收藏 举报 1.可以直接在开始-〉运行里面输入的管理工具: 文 ...
- 您可以从 Windows 命令行上运行 gcc、g++、ar、ranlib、dlltool 和其他一些 GNU 工具
Windows 上的安装为了在 Windows 上安装 GCC,您需要安装 MinGW.为了安装 MinGW,请访问 MinGW 的主页 www.mingw.org,进入 MinGW 下载页面,下载最 ...
- 命令行工具解析Crash文件,dSYM文件进行符号化
备份 文/爱掏蜂窝的熊(简书作者)原文链接:http://www.jianshu.com/p/0b6f5148dab8著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 序 在日常开发 ...
- [原创]使用命令行工具提升cocos2d-x开发效率(一)之TexturePacker篇
TexturePacker是一个常用的制作sprite sheet的工具,它提供了很多实用的功能. 一般我们制作sprite sheet都是使用他的gui版本,纯手工操作,就像下面这张图示的一样. 刚 ...
- [原创]使用命令行工具提升cocos2d-x开发效率(二)之CocosBuilder篇
如果你正在使用CocosBuilder或者是其他基于CocosBuilder源码改装而成的工具为你的游戏搭建场景或者UI,那你一定要看看这篇文章:) 你是否已经厌倦了无聊的手工publish操作? ...
- Expo大作战(六)--expo开发模式,expo中exp命令行工具,expo中如何查看日志log,expo中的调试方式
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,将全部来与官网 我猜去全部机翻+个人 ...
随机推荐
- 配置log4j
Log4J的配置文件(Configuration File)就是用来设置记录器的级别.存放器和布局的,它可接key=value格式的设置或xml格式的设置信息.通过配置,可以创建出Log4J的运行环境 ...
- js 时间格式化 代码
Date.prototype.Format = function (fmt) { //author: meizz var o = { &quo ...
- 各种文件的mime类型
扩展名:abs MIME类型:audio/x-mpeg 扩展名:ai MIME类型:application/postscript 扩展名:aif MIME类型:audio/x-aiff 扩展名:aif ...
- css3 transition动画
CSS3: 一.transition: <property> <duration> <animation type> <delay> eg: .div{ ...
- MVC 使用 Ueditor富文本编辑器
一.Ueditor 1.下载Ueditor富文本编辑器 官方下载地址: http://ueditor.baidu.com/website/download.html 建议下载开发版,此处我下载的是 . ...
- BWT压缩算法(Burrows-Wheeler Transform)
参考: BWT (Burrows–Wheeler_transform)数据转换算法 压缩技术主要的工作方式就是找到重复的模式,进行紧密的编码. BWT(Burrows–Wheeler_transfor ...
- excle表格生成网页
用Dreamweaver可以方便生成和excle表格一样的代码. 复制excle,粘贴
- REST架构之Apache Wink
Apache Wink是一个使用简单,稳定的Java框架,用于创建RESTful web services应用程序.Wink包括了一个服务器端模块和一个客户端模块,用于帮助开发者快速高效的开发REST ...
- JS基本概念
1.一切(变量.函数名.操作符)都区分大小写 2.标识符:第一个字符必须为字母.下划线或者美元符号,其他字符可以是字母.下划线.美元符号或者数字 3.数据类型 1)undefined:用var声明的变 ...
- 03-方法ppt动手动脑问题及课后实验性问题总结
一.如何不使用static来进行调用函数? 1.自己定义的不需要都是static,但是要在主函数中调用就需要static了,因为main是静态 的,在类加载时就加载了.如果想用又不加可以吧自己写的方法 ...