SimctlCLI 0.2.1

SimctlCLI 0.2.1

Christian Treffs 维护。



 
依赖项
SimctlShared~> 0.2.1
ShellOut~> 2.0.0
Swifter~> 1.5
 


SimctlCLI 0.2.1

Swift Simctl

CI 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 命令。

可用命令

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

  • 发送带自定义有效负载的推送通知
  • 授予或撤销隐私权限(例如,相机、照片...)
  • 设置设备 UI 的外观为浅色或深色模式
  • 设置状态栏覆盖(例如,数据网络、时间...)
  • 通过捆绑标识卸载应用
  • 通过捆绑标识终止应用
  • 重命名设备
  • 触发 iCloud 同步

您为什么要(或不要)使用它

优点

  • 封闭系统(带有 Xcode 和模拟器的 Mac)
  • 在系统如 APNS 上没有外部依赖
  • 没有不必要的增加测试代码基数(AppDelegate)的代码
  • 推送通知可以正确模拟,并保留了正常的应用周期
  • 在 CI 机器上运行
  • 您的应用保持黑盒,不需要修改

缺点

  • 需要在您的 Xcode 项目中进行少量配置
  • 仅适用于 Xcode 11.4+

有关特定用法,请参阅示例项目 Swift Simctl 包示例Swift Simctl Cocoapod 示例

🚀入门指南

以下说明将帮助您在您的机器上启动并运行项目副本。

📋先决条件

💻使用方法

📦Swift 包

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

  1. Xcode > 文件 > Swift Packages > 添加包依赖...
  2. 选择包仓库 > 搜索:SwiftSimctl 或找到 https://github.com/ctreffs/SwiftSimctl.git
  3. 选择 SwiftSimctl 包 > 下一步 xcode-swift-package
  4. 请别忘了将依赖项添加到您的(测试)目标中
  5. 使用 import Simctl 在您的(测试)目标中访问库。

在与测试一同运行服务器

确保在整个测试运行期间,SimctlCLI 在您的宿主机上运行。要使用 Xcode 自身自动化,请将以下片段作为测试目标的预操作和后操作使用。

您的方案 > 测试 > 预操作 > 运行脚本
#!/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 &
您的方案 > 测试 > 后操作 > 运行脚本
#!/bin/bash
set -e
killall SimctlCLI
📝Swift 包示例代码

请参考示例项目以获得深入的示例代码,https://github.com/ctreffs/SwiftSimctlExample

Cocoapod

假设您已经设置好了有 Cocoapods 的项目(否则请参考 这些说明

  1. pod 'Simctl', '~> 0.2.1' 添加到您的 Podfile 中的(测试)目标
  2. 运行 pod install
  3. 打开 <YourProject>.xcworkspace
  4. 使用 import Simctl 在您的(测试)目标中访问库。

在与测试一同运行服务器

确保在整个测试运行期间,SimctlCLI 在您的宿主机上运行。要使用 Xcode 自身自动化,请将以下片段作为测试目标的预操作和后操作使用。

您的方案 > 测试 > 预操作 > 运行脚本
#!/bin/bash
killall SimctlCLI # cleaning up hanging servers
set -e # fail fast
# start the server non-blocking from the checked out pod
${PODS_ROOT}/Simctl/bin/SimctlCLI start-server > /dev/null 2>&1 &
您的方案 > 测试 > 后操作 > 运行脚本
#!/bin/bash
set -e
killall SimctlCLI
📝代码示例 Cocoapod

请参阅示例项目以获取深入代码示例 https://github.com/ctreffs/SwiftSimctlExamplePod

🙏赞一个

Swift Simctl 的实现离不开这些出色的库

  • ShellOut - 简单的命令行调用
  • Swifter - 一个微型 HTTP 服务器

✍️作者

查看参与此项目的贡献者列表 https://github.com/ctreffs/SwiftSimctl/graphs/contributors

🔏许可证

本项目遵循 MIT 许可证 - 有关详细信息,请参阅 LICENSE 文件。