阅读 156

Fastlane:移动应用CICD最优解之iOS项目测试和截图

测试

在项目中的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

  • Jenkins

  • Bamboo

  • GitLab

Hosted CIs

  • Circle

  • Travis

  • Visual Studio

如果这里没有列出您的CI系统,没问题,fastlane运行在任何CI上。要触发fastlane,只需在终端运行的命令:

fastlane tests 复制代码

设置环境

下面是官网的练习,同文章前文提到的Auth和环境变量的设置。

  • 支持两步或双因素验证

  • 要设置的环境变量

发布构建结果

如果你想在钉钉、企业微信或其他团队聊天客户端上发布测试结果,请查看fastlane 钉钉或企业微信。

截图

Fastlane  为iOS 和 tvOS自动截图

在说服潜在用户下载或购买你的应用时,你的App Store截图可能是最重要的东西。不幸的是,许多应用的截图做得并不好。这通常是因为获取应用的截屏并将其准备用于显示非常耗时,并且很难确保所有内容都是正确且一致的!例如:

  • App Store中的截图是否与您最新的应用设计不一致?

  • 你的应用程序是否本地化为多种语言,需要不同的截图?

  • 你确定没有显示装载指示器吗?

  • 是相同的内容显示为每个你的大小变化?

fastlane工具可以自动化这一过程,使它快速,一致,同时给你漂亮的结果!

另外

要了解开发人员捕捉和美化截图的多种方法,请阅读这篇文章.

自动截图

snapshot配合fastlane自动捕捉应用程序的截图过程。它允许你:

  • 在所有模拟器上以多种语言捕捉数百个屏幕截图

  • 同时在多个设备模拟器中截屏,以减少执行时间

  • 在电脑截屏的同时做点别的事情

  • 配置一次,并存储配置,以便团队中的任何人都可以运行它

  • 生成一个美丽的网页显示所有的屏幕截图在所有设备。这是完美的发送到Q&A,营销,或翻译验证

  • 通过智能等待网络请求完成,避免在你的App Store截图中出现加载指示

  • 获得一个总结如何你的应用程序在所有支持的设备和语言

snapshot成功捕获所有屏幕截图后,它将显示一个漂亮的HTML页面来汇总所有被捕获的屏幕:

image.png

开始:使用我们项目中的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

  1. 在Xcode项目中创建一个新的 UI Test target

  2. 在项目目录下运行命令 fastlane snapshot init

  3. 给UI Test target添加 ./SnapshotHelper.swift文件

  4. 为新建的UI Test target添加一个新的 Xcode scheme

  5. 编辑 scheme

  6. 在左侧列表中选中 "Build", 并启用目标的“Run”列下的复选框。

  7. 在新建的scheme中启用 Shared 选项

  8. (如果是Obejctive-C项目的话) 为测试类添加桥接头文件

    • #import "MYUITests-Swift.h"

    • 桥接文件的名称是test target的名称后添加-Swift.h 后缀

  9. 在UI Test类中,单击左下角的“Record”按钮并记录您的交互

  10. 要截屏,请在交互之间调用以下代码

    • Swift: snapshot("01LoginScreen")

    • Objective C: [Snapshot snapshot:@"01LoginScreen" timeWaitingForIdle:10];

  11. 在 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上已经有的元数据和截图。


作者:浩哥有码
链接:https://juejin.cn/post/7043049080209014820


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐