SuperAPI AI 工具集

ios testing expert

测试与质量

查看项目

更新于 10-16 04:22

技能介绍

用途

iOS Testing Expert 是面向 iOS 应用的测试相关技能,提供 Swift 项目的综合测试模式与示例,覆盖 XCTest、XCUITest、Quick/Nimble 等测试框架。其定位是协助编写 iOS 测试、搭建测试基础设施,以及进行 Mock 等测试相关工作。

主要能力

测试金字塔

资料给出 iOS 测试的金字塔模型,由下至上分为三层:

  • 单元测试(Unit)约占 70%:针对模型、工具类和纯逻辑。
  • 集成测试(Integration)约占 20%:针对 ViewModel 与服务。
  • 端到端测试(E2E,XCUITest)约占 10%:UI 测试与完整流程。

XCTest 基础

单元测试方面,示例展示了对 User 的 fullName 进行断言,以及使用 XCTAssertThrowsError 校验验证逻辑会抛出错误。异步测试方面,提供了两种写法:使用 async/await 直接等待 fetch 返回,以及通过 expectation(description:) 配合 wait(for:timeout:) 处理回调式异步。

XCUITest(UI 测试)

UI 测试示例以登录流程为例:在 setUpWithError 中设置 continueAfterFailure = false 并启动应用;测试内依次对邮箱、密码输入框执行点击与 typeText,点击登录按钮,最后使用 waitForExistence(timeout: 5) 断言欢迎文本出现。

Accessibility Identifiers

在 SwiftUI 视图中通过 .accessibilityIdentifier("email") 为元素设置标识,UI 测试中即可用 app.textFields["email"] 定位。

Quick/Nimble(BDD 风格)

资料给出在 Package.swift 中引入依赖的方式:

.package(url: "https://github.com/Quick/Quick.git", from: "7.0.0"),
.package(url: "https://github.com/Quick/Nimble.git", from: "13.0.0"),

BDD 测试使用 QuickSpec,以 describe、context、it 组织用例,配合 beforeEach 准备数据,并用 Nimble 的 expect(...).to(equal(...))、expect { ... }.to(throwError()) 等断言。

Mocking with Protocols

采用基于协议的依赖注入:定义 UserServiceProtocol,真实实现 UserService 负责网络调用,测试用 MockUserService 通过 mockUser 和 shouldFail 控制返回或抛错。示例展示了在 testViewModelLoadsUser 中将 Mock 注入 UserViewModel,调用 load() 后断言 viewModel.user?.name。

快照测试

使用 swift-snapshot-testing,对 SwiftUI 视图调用 assertSnapshot,以 .image(layout: .device(config: .iPhone13)) 的形式生成快照断言。

测试覆盖率

通过 xcodebuild 开启覆盖率并输出结果包:

xcodebuild test \
  -scheme App \
  -enableCodeCoverage YES \
  -resultBundlePath TestResults.xcresult

查看报告:

xcrun xccov view --report TestResults.xcresult

使用方式

资料未提供安装或集成该技能的具体步骤,仅给出在 Swift 项目中编写测试与引入 Quick/Nimble 的方式。使用时可参照上述模式在 XCTest/XCUITest 测试目标中编写用例。

适用场景

  • 编写 iOS 单元测试、UI 测试与集成测试。
  • 搭建 iOS 测试基础设施。
  • 在 Swift 项目中进行 Mock 与依赖注入。
  • 需要 BDD 风格测试或快照测试时。

限制

资料未提供该技能的收费、价格、支持平台、许可方式等信息,暂未提供。