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
  1. 解决办法:查看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

你可能感兴趣的:(iOS利用Firebase Test Lab真机测试项目XCTest)