SuperAPI AI 工具集

cometchat-ios-testing

测试与质量

查看项目

更新于 10-15 20:14

技能介绍

用途:为 iOS 上的 CometChat 集成提供测试模式,覆盖 XCTest 单元与集成测试、SnapshotTesting 视觉回归、XCUITest 模拟器全流程 UI 测试。建议先阅读 cometchat-ios-core(初始化、登录、Secrets 模式)、cometchat-ios-components(各 VC 行为)以及 cometchat-ios-calls/references/callkit-and-pushkit.md(CallKit 测试策略)。

主要能力:一是测试目标结构,通常分为 YourApp、YourAppTests(XCTest 单元与集成)、YourAppUITests(XCUITest)。二是通过自有协议包装 SDK,因 CometChat SDK 为类与静态方法(如 CometChat.init、CometChat.login),难以直接 Mock,可定义 CometChatServiceProtocol 并用 withCheckedThrowingContinuation 包装回调,再通过依赖注入替换为 Mock。三是 XCTest 模式,支持 async/await 测试与 expectation 回调测试。四是 SwiftUI 视图测试,纯 SwiftUI 较难直接交互,建议把行为测试放在 service/view-model 层,视图断言交给 UI 测试,也可选用 ViewInspector。五是快照测试,依赖 pointfreeco/swift-snapshot-testing,首次运行生成参考图,后续对比,需提交 Snapshots 目录。六是 XCUITest,通过 launchEnvironment 传入 UI_TEST_MODE、TEST_UID 等,测试登录、会话与发消息流程。七是 CI 配置,给出 GitHub Actions 与 Xcode Cloud 的 xcodebuild test 示例,并建议固定 macOS 与 Xcode 版本。

使用方式:按上述协议包装与 DI 方式编写测试,在测试目标中注入 Mock;UI 测试使用开发用 cometchat-uid-1 至 cometchat-uid-5,凭据通过环境变量传入,不要写入 Secrets.swift。

限制与注意:不要在单元测试中使用真实 WebSocket;不要直接 Mock CometChat 静态方法;快照测试对字体渲染敏感,需固定 CI 运行环境;UI 测试应设置 continueAfterFailure = false;测试凭据仅通过 xcodebuild 环境变量注入。资料未提供具体价格、平台支持范围或效果数据。