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
notion image

查看所有的destiantion选项

 
xcrun simctl list

allowProvisioningUpdates:

允许xcodebuild与苹果网站通讯,进行自动签名,证书自动更新,生成。

resultBundlePath

参数可以输出测试的信息

Xcodebuid完整参数列表:https://fig.io/manual/xcodebuild

 
💡
欢迎您在底部评论区留言,一起交流~
 
 
 
 
 
 
网格交易是什么?网格交易原理、优缺点、策略教学币圈入门及撸毛常用工具合集