本指南介绍了如何准备 XCTest 测试,以在 Firebase Test Lab 中运行。
第 1 步:配置项目的“Derived Data”位置
Xcode 会将已编译的 iOS 工件(包括您构建的所有测试)放在“Derived Data”目录中。您可以保留该目录的默认位置,但为这些文件选择一个更易于访问的位置通常会有帮助,特别是在您要经常使用 Test Lab 运行测试的情况下:
- 在 Xcode 中打开您的项目。
- 在 macOS 菜单栏中,依次选择 File(文件)> Project Settings…(项目设置…)
- 将 Derived Data(派生数据)下拉菜单从 Default Location(默认位置)改为 Custom Location(自定义位置)。
- 在下拉菜单下方的字段中,选择一个供 Xcode 输出测试的位置。(这是您的 FOLDER_WITH_TEST_OUTPUT)
第 2 步:构建通用测试文件
Test Lab 使用 XCTest 框架运行单元测试和界面测试。如需在 Test Lab 设备上运行您应用的 XCTest,请将其构建为在通用 iOS 设备上进行测试:
- 从 Xcode 工作区窗口顶部的设备下拉菜单中,选择 Generic iOS Device(通用 iOS 设备)。
- 在 macOS 菜单栏中,依次选择 Product(产品)> Build For(构建目的)> Testing(测试)。
作为替代方案,您可以从命令行构建 XCTest。在终端中运行以下命令:
项目
xcodebuild -project PATH/TO/YOUR_WORKSPACE/YOUR_PROJECT.xcodeproj \ -scheme YOUR_SCHEME \ -derivedDataPath FOLDER_WITH_TEST_OUTPUT \ -sdk iphoneos build-for-testing
工作区
xcodebuild -workspace PATH/TO/YOUR_WORKSPACE.xcworkspace \ -scheme YOUR_SCHEME \ -derivedDataPath FOLDER_WITH_TEST_OUTPUT \ -sdk iphoneos build-for-testing
第 3 步:对测试签名并进行验证
确保应用和测试中的所有工件均已签名。例如,您可以指定签名设置(如预配配置文件和身份),通过 Xcode 执行此操作。如需了解详情,请参阅 Apple 代码签名。
运行
codesign --verify --deep --verbose /path/to/MyApp.app
验证应用签名,其中“MyApp”是解压缩后的文件夹内的应用名称。此名称因项目而异。预期输出为MyApp.app: valid on disk
。如果您是在运行 XCUITest,则需要通过运行
codesign --verify --deep --verbose /path/to/MyTest-Runner.app
来验证测试和运行程序,其中“MyTest”是解压缩后的文件夹内的运行程序名称。此名称因项目而异。预期输出为MyTest-Runner.app: valid on disk
。
第 4 步:打包应用并进行测试以备上传
成功构建测试后,将其压缩以上传到 Test Lab:
cd FOLDER_WITH_TEST_OUTPUT/Build/Products : \ zip -r MyTests.zip Debug-iphoneos YOUR_SCHEME_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun
您还可以通过手动压缩测试文件来打包测试文件:
打开 Finder,然后转到
FOLDER_WITH_TEST_OUTPUT
。打开以项目名称为前缀的文件夹,然后转到其中的
Build/Products
文件夹。选择
Debug-iphoneos
和YOUR_SCHEME_iphoneosDEPLOYMENT_TARGET-arm64.xctestrun
文件夹,然后将其压缩。
第 5 步:(可选)在本地运行测试
在使用 Test Lab 运行测试之前,您可以使用 USB 连接的设备在本地运行该测试,以对其行为进行质量检查:
xcodebuild test-without-building \ -xctestrun "Derived Data/Build/Products/YOUR_SCHEME.xctestrun" \ -destination id=your-phone-id
后续步骤
在 Firebase 控制台或 gcloud CLI 中上传并运行测试。