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

利用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 4. 解决办法:查看UITests Scheme是否配置正确 image.png

  1. 解决后,正常的xctestrun 产物

image.png

xcodebuild 常用命令:

1. 显示当前所有的BuildSettings的配置
xcodebuild -showBuildSettings

2. 查看电脑里面xcode支持的sdks

xcodebuild -showsdks

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

4. 构建

复制代码

二. 测试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
复制代码
  1. 上传

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

  1. 也可使用gcloud上传并测试, 前提安装好Cloud SDK
1. 可查看允许的测试设备
gcloud firebase test ios models list   

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

3. 上传并测试
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

猜你喜欢

转载自juejin.im/post/7073356097163100167