Command-Line Testing

一般来说,我们平时测试都是在 Xcode 里面利用可视化界面或者 cmd+U 进行的,可是自动化脚本对这样的方式支持可不是那么的友好,例如利用 CI 的自动化测试,最好的办法就是利用 Xcode 提供的 Command Line 工具。

xcodebuild

xcodebuild builds one or more targets contained in an Xcode project, or builds a scheme contained in an Xcode workspace or Xcode project.

Xcode 提供的一个基于 CLT 的一个命令,用于编译测试打包分析你的工程。

build actions

在这个命令中,提供了一大坨 build actions ,基本和 GUI 里面的功能一致。

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
build action ...
Specify a build action (or actions) to perform on the target.
Available build actions are:

build Build the target in the build root (SYMROOT). This is
the default build action.

analyze Build and analyze a target or scheme from the build
root (SYMROOT). This requires specifying a scheme.

archive Archive a scheme from the build root (SYMROOT). This
requires specifying a scheme.

test Test a scheme from the build root (SYMROOT). This
requires specifying a scheme and optionally a destina-
tion.

installsrc Copy the source of the project to the source root
(SRCROOT).

install Build the target and install it into the target's
installation directory in the distribution root
(DSTROOT).

clean Remove build products and intermediate files from the
build root (SYMROOT).

用于跑测试的 test 命令

一般来说,这里面的参数也是和图形化界面里面的一样,选择 build action ,选择 project 或者 workspace ,选择 scheme 还有目标测试平台设备,例如

1
$ xcodebuild test -project MyAppProject.xcodeproj -scheme MyApp -destination 'platform=OS X,arch=x86_64'

选择运行测试设备

当然了,我们一般都是用模拟器啦~

1
$ xcodebuild test -project MyAppProject.xcodeproj -scheme MyApp -destination 'platform=iOS Simulator,name=iPhone,0S=7.0'

如果你想用真机测试,当然可以

1
$ xcodebuild test -project MyAppProject.xcodeproj -scheme MyApp -destination 'platform=iOS,name=Development iPod touch'

如果你突发奇想,想要三个目标设备一块跑,当然可以!只需要填写三个 -destination 即可。

1
$ xcodebuild test -project MyAppProject.xcodeproj -scheme MyApp -destination 'platform=OS X,arch=x86_64' -destination 'platform=iOS,name=Development iPod touch' -destination 'platform=iOS Simulator,name=iPhone,0S=7.0'

命令返回值

和大多数命令一样,执行测试完成后,会有个返回值,当然了,如果失败了……

If any tests fail, xcodebuild returns a nonzero exit code.

想要了解更多

这只是个大致的介绍,更多细节请联系 Apple 牛逼的工程师们(明显不靠谱),或者

1
$ man xcodebuild
来个冰阔落
0%