测试
在项目中的Fastfile中添加如下代码来运行单元测试和UI测试
lane :tests do
run_tests(scheme: "MyAppTests")
end
还可以设置更多参数,例如
lane :tests do
run_tests(workspace: "Example.xcworkspace",
devices: ["iPhone 6s", "iPad Air"],
scheme: "MyAppTests")
end
查看更多 可用参数列表
使用如下命令即可执行我们定义的这个测试甬道
fastlane tests
在CI中设置并运行fastlane
要在持续集成服务上使用fastlane运行iOS测试,查看 fastlane持续集成相关文档.
由于fastlane将所有配置存储在简单的配置文件中,并通过命令行运行,因此它支持各种类型的CI系统。
下面这些文档可以帮助我们开始使用一些流行的CI系统。
Self-Hosted CIs
Hosted CIs
如果这里没有列出您的CI系统,没问题,fastlane运行在任何CI上。要触发fastlane,只需在终端运行的命令:
fastlane tests
设置环境
下面是官网的练习,同文章前文提到的Auth和环境变量的设置。
发布构建结果
如果你想在钉钉、企业微信或其他团队聊天客户端上发布测试结果,请查看fastlane 钉钉或企业微信。
截图
Fastlane 为iOS 和 tvOS自动截图
在说服潜在用户下载或购买你的应用时,你的App Store截图可能是最重要的东西。不幸的是,许多应用的截图做得并不好。这通常是因为获取应用的截屏并将其准备用于显示非常耗时,并且很难确保所有内容都是正确且一致的!例如:
- App Store中的截图是否与您最新的应用设计不一致?
- 你的应用程序是否本地化为多种语言,需要不同的截图?
- 你确定没有显示装载指示器吗?
- 是相同的内容显示为每个你的大小变化?
fastlane工具可以自动化这一过程,使它快速,一致,同时给你漂亮的结果!
另外
要了解开发人员捕捉和美化截图的多种方法,请阅读这篇文章.
自动截图
snapshot配合fastlane自动捕捉应用程序的截图过程。它允许你:
- 在所有模拟器上以多种语言捕捉数百个屏幕截图
- 同时在多个设备模拟器中截屏,以减少执行时间
- 在电脑截屏的同时做点别的事情
- 配置一次,并存储配置,以便团队中的任何人都可以运行它
- 生成一个美丽的网页显示所有的屏幕截图在所有设备。这是完美的发送到Q&A,营销,或翻译验证
- 通过智能等待网络请求完成,避免在你的App Store截图中出现加载指示
- 获得一个总结如何你的应用程序在所有支持的设备和语言
在snapshot成功捕获所有屏幕截图后,它将显示一个漂亮的HTML页面来汇总所有被捕获的屏幕:
开始:使用我们项目中的UI Tests
snapshot使用苹果UI测试的功能来驱动与应用的交互。要熟悉编写UI测试,请查看以下介绍:
- WWDC 2015 Introduction to UI Tests
- A first look into UI Tests
- UI Testing in Xcode 7
- HSTestingBackchannel : ‘Cheat’ by communicating directly with your app
- Automating App Store screenshots using fastlane snapshot and frameit
要快速启动UI测试,可以使用UI Test记录器,通过单击窗口底部的红色记录按钮可以启动该记录器。通过使用模拟器与你的应用交互,Xcode会为你生成UI测试代码。要了解更多,请查看 这篇国外的博客或者 国内的文章
设置 snapshot
-
在Xcode项目中创建一个新的 UI Test target
-
在项目目录下运行命令
fastlane snapshot init -
给UI Test target添加
./SnapshotHelper.swift文件 -
为新建的UI Test target添加一个新的 Xcode scheme
-
编辑 scheme
-
在左侧列表中选中 "Build", 并启用目标的“Run”列下的复选框。
-
在新建的scheme中启用
Shared选项 -
(如果是Obejctive-C项目的话) 为测试类添加桥接头文件
#import "MYUITests-Swift.h"- 桥接文件的名称是test target的名称后添加-Swift.h 后缀
-
在UI Test类中,单击左下角的“Record”按钮并记录您的交互
-
要截屏,请在交互之间调用以下代码
- Swift:
snapshot("01LoginScreen") - Objective C:
[Snapshot snapshot:@"01LoginScreen" timeWaitingForIdle:10];
- Swift:
-
在
setUp()函数中添加如下代码: Swift:
let app = XCUIApplication()
setupSnapshot(app)
app.launch()
Objective C:
XCUIApplication *app = [[XCUIApplication alloc] init];
[Snapshot setupSnapshot:app waitForAnimations:NO];
[app launch];
12. 在终端中运行 fastlane snapshot.
警告:在Xcode中运行测试不会创建快照,也不会生成正确的结果——尽管没有测试会失败。命令行程序创建必要的子目录,适当地重命名文件,并生成概述html页面。
设置过程也会生成一个Snapfile,看起来类似于
# A list of devices you want to take the screenshots from
# devices([
# "iPad (7th generation)",
# "iPad Air (3rd generation)",
# "iPad Pro (11-inch)",
# "iPad Pro (12.9-inch) (3rd generation)",
# "iPad Pro (9.7-inch)",
# "iPhone 11",
# "iPhone 11 Pro",
# "iPhone 11 Pro Max",
# "iPhone 8",
# "iPhone 8 Plus"
# ])
languages([
"en-US",
"de-DE"
])
# The name of the scheme which contains the UI Tests
# scheme "SchemeName"
# Where should the resulting screenshots be stored?
# output_directory "./screenshots"
# clear_previous_screenshots true # remove the '#' to clear all previously generated screenshots before creating new ones
# Choose which project/workspace to use
# project "./Project.xcodeproj"
# workspace "./Project.xcworkspace"
# For more information about all available options run
# fastlane action snapshot
我们可以调整该文件以适应您的项目。每次运行“ fastlane snapshot文件将自动加载。
查看可用于Snapfile的参数运行 fastlane action snapshot.
如果想直接尝试截屏功能。首先克隆fastlane repo,转到快照示例项目,然后运行fastlane snapshot
git clone https://github.com/fastlane/fastlane # Clone the fastlane repo
cd fastlane/snapshot/example # Navigate to the example project
fastlane snapshot # Generate screenshots for the sample app
上传截图到App Store
在使用“fastlane snapshot”生成截图后,你通常会想要将其上传到App Store Connect。 如果你遵循安装指南,你之前已经运行过'fastlane init',所以项目中的截图和元数据会存在' fastlane/screenshots '和' fastlane/metadata '目录中。 运行“fastlane snapshot”默认会将截图存储在“fastlane/screenshots”目录中。
fastlane deliver
在上传截图之前,这还会显示一个元数据摘要,因为这将覆盖你在App Store Connect上已经有的元数据和截图。