Swift Simctl

macOS license
swift-version-compatibility platform-compatibility

simctl-example-gif

这是一个用 Swift 编写的小工具 (SimctlCLI) 和库 (Simctl),用于自动化单元和 UI 测试中 xcrun simctl 模拟器命令。

它能够实现可靠的完全自动化的推送通知测试,包括动态内容,并由您控制的 UI 测试驱动。

🚧 架构

Swift Simctl 由两部分组成:SimctlCLISimctl

Simctl 是一个 Swift 库,可以添加到项目的测试包中。它提供了一个接口,用于从测试代码中调用通常只能通过 xcrun simctl 访问的命令。为了能够调用这些命令,Simctl 通过本地网络连接与 SimctlCLI 进行通信。

SimctlCLI 是一个小型的命令行工具,它启动一个本地服务器,监听来自 Simctl(客户端库)的请求,并执行 xcrun simctl 命令。

⌨ 可用命令

以下命令将在您的(测试)目标代码中可用:

❔ 您为什么(不)应该使用它

➕ 优点

➖ 缺点

有关具体用法,请参阅示例项目 Swift Simctl Package Example

🚀 快速入门

以下说明将使您能够在您的机器上启动并运行该项目的副本。

📋 先决条件

💻 用法

📦 Swift 包

要在您的 Xcode 项目中使用 Swift Simctl,请添加该包

  1. Xcode > File > Swift Packages > Add Package Dependency...
  2. 选择 Package Repository > 搜索:SwiftSimctl 或找到 https://github.com/ctreffs/SwiftSimctl.git
  3. 选择 SwiftSimctl 包 > Next xcode-swift-package
  4. 不要忘记将依赖项添加到您的(测试)目标
  5. 使用 import Simctl 在您的(测试)目标中访问该库。

与您的测试一起运行服务器

确保在测试运行期间,SimctlCLI 在您的主机上运行。 要使用 Xcode 本身自动执行此操作,请使用以下代码段作为测试目标的前置和后置操作。

Your Scheme > Test > Pre-Actions > Run Script
#!/bin/bash
killall SimctlCLI # cleaning up hanging servers
set -e # fail fast
# start the server non-blocking from the checked out package
${BUILD_ROOT}/../../SourcePackages/checkouts/SwiftSimctl/bin/SimctlCLI start-server > /dev/null 2>&1 &
Your Scheme > Test > Post-Actions > Run Script
#!/bin/bash
set -e
killall SimctlCLI
📝 代码示例 Swift 包

有关深入的代码示例,请参阅示例项目 https://github.com/ctreffs/SwiftSimctlExample

💭 端口和设置

服务器使用的默认端口是 8080
如果您需要使用另一个端口,则需要在调用 SimctlCLI 时通过 --port 标志提供它,并在设置代码中的测试时相应地调整客户端端口。
使用 SimctlCLI --help 获取有关此设置和其他服务器配置设置的帮助。

🙏 致谢

如果没有这些出色的库,Swift Simctl 将不可能实现

💁 如何贡献

如果您想贡献,请首先参阅 CONTRIBUTION GUIDE

在提交代码之前,请务必运行

该项目目前由 @ctreffs 维护。
另请参阅参与此项目的 贡献者 列表。

🔏 许可证

该项目已获得 MIT 许可证的许可 - 有关详细信息,请参阅 LICENSE 文件。