iOS利用Firebase Test Lab真机测试项目XCTest

语言: CN / TW / HK

theme: juejin

利用Firebase Test Lab真机测试项目XCTest

Firebase Test Lab 在 Google 数据中心内托管的设备上测试您的应用。 是基于云的应用测试基础架构,它让您可以在一系列设备上以及各种配置下测试自己的应用,以便更好地了解其在用户手中的表现。

Firebase Test Lab每个项目每天都有5次测试机会 (可以多创建几个容易用于测试) image.png

通过 gcloud CLI 进行测试 后通过在 gcloud 切换, 设置您的 Firebase 项目,其中 PROJECT_ID 是您的 Firebase 项目的 ID: gcloud config set project ${PROJECT_ID}

1. 可以使用fastlane的插件fastlane-plugin-firebase_test_lab

因为和google-cloud-storage冲突,很遗憾我没用起来, Issues也不能解决该问题 后面再进行调研补充

2. 使用shell命令行式

一. 项目打包Xctest产物xctestrun

  1. xcodebuild不会可以看这篇

  2. 项目目录下执行可打包产物, 对应产物路径为${YOUR_DerivedDataPath}

xcodebuild build-for-testing \ -workspace ${YOUR_PROJECT_NAME}.xcworkspace \ -scheme ${YOUR_PROJECT_SCHEME_NAME} \ -derivedDataPath ${YOUR_DerivedDataPath} \ -sdk iphoneos

  1. 可能遇到的问题:xctestrun无效产物,不能进入测试 image.png
  2. 解决办法:查看UITests Scheme是否配置正确 image.png

  3. 解决后,正常的xctestrun产物 image.png

xcodebuild常用命令: ``` 1. 显示当前所有的BuildSettings的配置 xcodebuild -showBuildSettings

  1. 查看电脑里面xcode支持的sdks
 xcodebuild -showsdks

  2. 清理项目 xcodebuild clean \ -workspace ${YOUR_PROJECT_NAME}.xcworkspace \ -scheme ${YOUR_PROJECT_SCHEME_NAME}

  3. 构建

```

二. 测试xctestrun

可以自己先用设备测试编译后的xctestrun产物,不测试就上传只会浪费测试机会

xcodebuild test-without-building \ -xctestrun ${.xctestrun产物绝对路径} \ -destination 'platform=iOS,id={你的USB连接的设备ID}'

-xctestrun xxx 传入的就是入口文件,一定要写对地址,最好是完整路径,防止出错 -destination xxx 指定的测试设备 image.png

三. 打包上传到Firebase Test Lab

  1. 打包 cd ${YOUR_DerivedDataPath}/Build/Products ; \ zip -r MyTests.zip Debug-iphoneos ${YOUR_PROJECT_SCHEME_NAME}_iphoneos*.xctestrun

  2. 上传 将生成的MyTests.zip手动上传到Firebase项目下的Test Lab - 运行测试即可 image.png

  3. 也可使用gcloud上传并测试, 前提安装好Cloud SDK

``` 1. 可查看允许的测试设备 gcloud firebase test ios models list

  1. 切换项目 gcloud config set project ${项目名称id}

  2. 上传并测试 gcloud firebase test ios run \ --test ${MyTests.zip路径} \ --device model=iphone11,version=13.3 \ --timeout 20m

```

过程问题与解决

1. Minimum deployment version lower than device OS version.

image.png

关于DEPLOYMENT_TARGET错误理解问题 该错误版本并不是指Xcode iphone sdk打包的版本, 而是指UItest那个TARGETS只能的最低iOS支持版本

解决 image.png

2. Test execution timed out in runner invocation

image.png UITests文件写法有问题,先在本机测试一番再上传吧, 别浪费机会咯

3.Jenkins Pipeline调用sh执行zip压缩文件(打包)时报错

image.png

解决:生成产物前要把产物的文件夹先删除 image.png