涉及工具
- Xcode:苹果官方集成开发环境,用于编写、编译Objective - C代码以及运行UIAutomation测试。
- CI/CD工具:如Jenkins、GitLab CI/CD、CircleCI等。以Jenkins为例,它是一个开源的自动化服务器,能实现持续集成和持续交付。
- Fastlane:一个用于自动化iOS和Android应用发布流程的工具集,可以简化Xcode项目的构建、测试和部署过程。
配置步骤
- 项目配置
- 在Xcode项目中,确保UIAutomation测试已经正确编写并能在本地运行。
- 配置Xcode项目的scheme,使其包含UIAutomation测试。在Xcode中,打开项目,选择菜单栏中的
Product
-> Scheme
-> Edit Scheme
,在Test
选项中确保相关测试目标被勾选。
- Jenkins配置(以Jenkins为例)
- 安装插件:安装Xcode integration插件等相关插件,以便Jenkins能与Xcode交互。
- 创建任务:新建一个自由风格的软件项目任务。
- 源码管理:配置Git仓库地址,输入访问凭证(如果仓库需要认证),这样Jenkins可以拉取最新代码。
- 构建环境:在构建环境部分,确保设置了合适的Xcode版本(如果有多个版本安装)。例如,使用
xcode - select - s /Applications/Xcode.app
来指定Xcode路径。
- 构建步骤:添加一个构建步骤,选择
Execute shell
(如果是在Linux或macOS Agent上)。在命令框中输入构建和运行测试的命令,例如使用Fastlane:
fastlane test
- 这里的
fastlane test
命令会执行Fastfile
中定义的测试任务,通常包括构建项目和运行UIAutomation测试。如果不使用Fastlane,也可以直接使用Xcodebuild命令:
xcodebuild -workspace YourWorkspace.xcworkspace -scheme YourScheme -destination 'platform = iOS Simulator,OS = 14.0,name = iPhone 12' test
- Post - build Actions:可以设置邮件通知等操作,当构建或测试失败时通知相关人员。例如,在
Editable Email Notification
中配置收件人、邮件主题和内容模板等。
- Fastlane配置
- 在项目根目录下创建
Fastfile
。
- 在
Fastfile
中定义测试任务,例如:
desc "Run UI tests"
lane :test do
xcodebuild(
workspace: "YourWorkspace.xcworkspace",
scheme: "YourScheme",
destination: "platform = iOS Simulator,OS = 14.0,name = iPhone 12",
test: true
)
end
- 还可能需要配置
Matchfile
(如果涉及证书管理)等其他Fastlane相关文件,以确保构建过程中证书和配置文件的正确处理。
可能遇到的问题及解决方案
- 模拟器启动问题
- 问题:在CI环境中,模拟器可能无法正确启动,导致测试无法运行。
- 解决方案:在构建脚本中提前启动模拟器,例如在
Execute shell
中添加以下命令:
xcrun simctl list devices | grep 'iPhone 12 (14.0)'
if [ $? -eq 0 ]; then
echo "Simulator already exists"
else
xcrun simctl create "iPhone 12 (14.0)" "iPhone 12" "14.0"
fi
xcrun simctl boot "iPhone 12 (14.0)"
- 依赖问题
- 问题:项目可能依赖第三方库,在CI环境中拉取依赖失败。
- 解决方案:确保CI环境中安装了CocoaPods等依赖管理工具,并在构建脚本中先执行安装依赖的命令,例如:
pod install
- 证书和配置文件问题
- 问题:构建过程中可能因为证书或配置文件缺失、不正确导致构建失败。
- 解决方案:使用Fastlane的
match
工具来管理证书和配置文件。在Fastfile
中添加match
相关配置,例如:
match(type: "appstore", readonly: true)
- 并在CI环境中设置相关的Match密钥等环境变量,确保
match
能正确获取证书和配置文件。
- 测试报告问题
- 问题:UIAutomation测试结果可能难以直观查看和分析。
- 解决方案:可以使用第三方工具如
XCTestHTMLReport
来生成HTML格式的测试报告。在Fastfile
中添加以下命令:
xcodebuild(
workspace: "YourWorkspace.xcworkspace",
scheme: "YourScheme",
destination: "platform = iOS Simulator,OS = 14.0,name = iPhone 12",
test: true,
result_bundle_path: "test-results"
)
xcpretty -r html -o test - results/report.html
- 这样在构建完成后可以在
test - results/report.html
中查看详细的测试报告。