在同一 iOS 设备上使用 xcodebuild 运行并行测试

Posted

技术标签:

【中文标题】在同一 iOS 设备上使用 xcodebuild 运行并行测试【英文标题】:Run parallel tests using xcodebuild on the same iOS device 【发布时间】:2018-10-24 08:46:03 【问题描述】:

我有一个项目,它有一个 Xcode 测试套件,我想通过使用“xcodebuild ... 测试”命令来实现一个 CI 系统。我唯一的限制是硬件。我仅限于 2 台 Mac 和 2 台 iPad,而且我还想为 Debug 和 Release 构建。问题是我有不同的应用程序风格,我想在一台 iPad 上运行其中的一部分(例如调试时的所有风格),而在另一台 iPad 上运行其他风格。 我尝试使用“tests”参数多次调用“xcodebuild”命令,希望它会被并行化,但问题是它会杀死已经在设备上运行的测试应用程序实例。

我花了一些时间寻找这样做的人,但唯一接近我需要的是使用多个 ios 模拟器,我不习惯,因为该项目需要真实的设备测试。

是否可以在同一设备上运行并行测试?我是否遗漏了一些需要添加到 xcodebuild 命令的参数?

【问题讨论】:

【参考方案1】:

不,您一次只能在一台设备上运行一项测试操作。这就是人们使用多个模拟器的原因,因为如果您需要多次运行相同的测试,您可以将它们全部设置为相同的操作系统。

不是您要寻找的答案,但您可以使用 Xcode 服务器来拥有多个机器人,每个机器人都有一个。如果它们都指向同一个 repo / 分支,那么它们应该一个接一个地运行。这意味着构建工具的手动工作更少。

我还以为我在某处读到过,使用 Xcode 10 您可以在多个 Xcode 服务器之间进行负载平衡,但找不到指向它的链接。如果您有 2 台机器,这可能会有所帮助。如果不是,您可以在两个 Xcode 服务器上复制机器人。也许使用 API 来控制机器人的创建?

Xcode server setup guide

【讨论】:

以上是关于在同一 iOS 设备上使用 xcodebuild 运行并行测试的主要内容,如果未能解决你的问题,请参考以下文章

xcodebuild:错误:无法构建工作区。原因:无法使用仅构建设备来运行此目标

iOS Xcodebuild

用于使用最新 sdk 的 xcodebuild 参数。

xcodebuild 使用哪个版本的 Xcode?

在 iOS 的不同设备上为同一个项目使用不同的文件?

同一设备上的多个 ios 应用程序可以连接到同一个外围设备吗?