利用Firebase Test Lab真机测试项目XCTest
Firebase Test Lab 在 Google 数据中心内托管的设备上测试您的应用。
是基于云的应用测试基础架构,它让您可以在一系列设备上以及各种配置下测试自己的应用,以便更好地了解其在用户手中的表现。
Firebase Test Lab每个项目每天都有5次测试机会 (可以多创建几个容易用于测试)
![](https://img.haomeiwen.com/i1206330/4107fed51ac51f02.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
-
项目目录下执行可打包产物, 对应产物路径为
${YOUR_DerivedDataPath}
xcodebuild build-for-testing \
-workspace ${YOUR_PROJECT_NAME}.xcworkspace \
-scheme ${YOUR_PROJECT_SCHEME_NAME} \
-derivedDataPath ${YOUR_DerivedDataPath} \
-sdk iphoneos
- 可能遇到的问题:
xctestrun
无效产物,不能进入测试
image.png
-
解决办法:查看UITests Scheme是否配置正确
image.png
- 解决后,正常的
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
指定的测试设备
![](https://img.haomeiwen.com/i1206330/a0c3629cb4a5968f.png)
三. 打包上传到Firebase Test Lab
- 打包
cd ${YOUR_DerivedDataPath}/Build/Products ; \
zip -r MyTests.zip Debug-iphoneos ${YOUR_PROJECT_SCHEME_NAME}_iphoneos*.xctestrun
- 上传
将生成的MyTests.zip
手动上传到Firebase项目下的Test Lab - 运行测试
即可
image.png
- 也可使用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.
![](https://img.haomeiwen.com/i1206330/6c6f18c079509b58.png)
关于DEPLOYMENT_TARGET错误理解问题
该错误版本并不是指Xcode iphone sdk打包的版本, 而是指UItest那个TARGETS只能的最低iOS支持版本
解决
![](https://img.haomeiwen.com/i1206330/886c590bfbd2b347.png)
2. Test execution timed out in runner invocation
![](https://img.haomeiwen.com/i1206330/e8d06dcd5ec1e69d.png)
UITests文件写法有问题,先在本机测试一番再上传吧, 别浪费机会咯
3.Jenkins Pipeline调用sh执行zip压缩文件(打包)时报错
![](https://img.haomeiwen.com/i1206330/e851edd5647ca7d6.png)
解决:生成产物前要把产物的文件夹先删除
![](https://img.haomeiwen.com/i1206330/9dc7b498e6480709.png)
网友评论