用途
该技能用于在编写、运行或调试 XCUITest 时提供参考。它是一份关于使用 XCUITest 编写可靠、可维护 UI 测试的综合指南。
核心原则
可靠的 UI 测试需要三点:稳定的元素识别(accessibilityIdentifier)、基于条件的等待(绝不使用硬编码 sleep)、清晰的测试隔离(无共享状态)。
元素识别
应始终对测试关键元素使用 accessibilityIdentifier。资料给出了 SwiftUI 与 UIKit 的写法示例。查询选择方面,引用 WWDC 2025-344「Recording UI Automation」:本地化字符串会变化,应改用 accessibilityIdentifier;深层嵌套视图应使用尽可能最短的查询;动态内容应使用通用查询或标识符。资料对比了易碎查询(如按键名或索引)与稳定查询(使用标识符或 containing 定位)。
等待策略
不要使用 sleep()。应使用基于条件的等待,如 waitForExistence。资料提供了多种等待模式:等待元素出现、等待元素消失(exists == false)、等待元素可点击(isHittable == true)、等待文本出现,以及针对异步操作等待网络响应(先等 loading 出现,再等其消失)。
测试结构
涵盖 setUpWithError / tearDownWithError 的写法:在 setUp 中设置 continueAfterFailure、初始化 XCUIApplication、通过 launchArguments 与 launchEnvironment 重置状态,在 tearDown 中失败时截图并终止应用。测试方法采用 ARRANGE / ACT / ASSERT 模式,示例为登录流程。
常见交互
包括文本输入(含自定义 clearText 扩展)、滚动到指定元素(swipeUp 循环直至 isHittable)、处理系统与应用弹窗(addUIInterruptionMonitor、alerts)、以及键盘收起。
测试计划
Test plans 允许以不同配置运行同一批测试,资料给出了 TestPlan.xctestplan 的 JSON 示例(英语、西班牙语、Dark Mode 三种配置)以及使用 xcodebuild test 配合 -testPlan 与 -resultBundlePath 的运行命令。
CI/CD 集成
涵盖并行测试执行(-parallel-testing-enabled YES、-maximum-parallel-test-targets 4)、失败重试(-retry-tests-on-failure、-test-iterations 3)、代码覆盖率(-enableCodeCoverage YES 并导出 coverage 报告)。
调试失败的测试
包括手动截图、录制视频(在测试计划或 scheme 中设置 systemAttachmentLifetime / userAttachmentLifetime)、打印元素层级(app.debugDescription)。
应避免的反模式
- 硬编码延迟;2. 基于索引的查询;3. 测试间共享状态;4. 测试实现细节(应测试用户可见行为)。
录制 UI 自动化(Xcode 26+)
引用 WWDC 2025-344:Record(在 Xcode 中录制交互)、Replay(通过测试计划跨设备/语言/配置运行)、Review(在测试报告中观看视频录制)。资料还展示了如何增强录制生成的代码使其更稳定。
资源
引用 WWDC 2025-344、2024-10206、2023-10175、2019-413;文档 /xctest/xcuiapplication、/xctest/xcuielement、/xctest/xcuielementquery;相关技能 axiom-ui-testing、axiom-swift-testing。
限制
资料未提供该技能的安装命令、收费或价格信息,亦未说明其运行平台要求或效果数据,这些内容暂未提供。