type
status
date
slug
summary
tags
category
icon
password
Apple 的 Xcode IDE 提供了用于开发、配置和运行 XCTest 的完备UI界面。但是,从远程服务器(例如 CI/CD 服务器)触发自动化测试时,无法访问 Xcode IDE,并且需要从命令行运行测试。在本指南中,简单介绍xcodebuild 命令行工具,以便从终端运行自动化测试。
Xcode 命令行工具
当您为 iOS 应用程序开发自动化测试时,Xcode 提供了一个完整的GUI 环境以及大量工具。然而,这是以磁盘空间为代价的,需要安装完整的XCode开发工具。并且,我们期望从远程服务器执行测试时,无法访问 Xcode GUI,也并不需要它的所有功能。
Apple 提供了一个 Xcode 命令行工具包,它更加简洁,只需要 大约3 GB的磁盘空间,并且具有仅从命令行运行测试的必要条件。因此,理论上我们只需在远程服务器上安装 Xcode 命令行工具即可,而无需安装完整的 Xcode。(但是为了便于调试,我们通常还是会在远端机器上安装一个Xcode的)
安装
在 MacOS 终端中运行以下命令,安装Xcode命令行工具:
使用 xcodebuild 运行测试
xcodebuild 是构建 Xcode 项目和运行测试的主要命令,并接受各种参数。运行测试的基本 xcodebuild 命令如下所示:
详细介绍下参数。
- test:针对指定scheme运行测试。这就像在 Xcode 中选择 Product > Test
- -project 或 -workspace:Xcode 项目 (xcodeproj) 或 Xcode 工作区文件 (.xcworkspace) 的路径。
- -scheme:是target的特定scheme。它定义了当您在 Xcode 中按“Run”, “Build”, “Test”等操作时会发生什么。默认情况下,每个目标至少有一个scheme,可以在 Xcode 中对其进行自定义。
- -destination:对要运行的模拟器或物理设备的udid。
scheme参数
我们可以使用 xcodebuild通过运行命令列出给定 Xcode 项目或workspace的可用schemes。
输出结果:
destination参数
destination参数接受键值对字符串。为测试case指定一个目标,它接受一个参数,该参数描述要用作目标的设备、模拟器或Mac。它由一组逗号分隔的key=value对组成,它们取决于所使用的设备、模拟器或Mac。
only-testing和-skip-testing
这两个选项是可选的,它们分别表示运行或跳过指定的测试,它们接受一个参数,该参数指定要执行或跳过的测试,格式如下:
only-testing:TestClass/TestMethod
skip-testing:TestClass/TestMethod
- 对于iOS程序,destinationspecifier支持的key为platform、name和id
查看所有的destiantion选项
xcrun simctl list
allowProvisioningUpdates:
允许xcodebuild与苹果网站通讯,进行自动签名,证书自动更新,生成。
resultBundlePath
参数可以输出测试的信息
Xcodebuid完整参数列表:https://fig.io/manual/xcodebuild
欢迎您在底部评论区留言,一起交流~
- 作者:布道大师
- 链接:https://tangly1024.com/article/running-xctests
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。