重要前提
安装AI Skills的关键前提是:必须科学上网,且开启TUN模式,这一点至关重要,直接决定安装能否顺利完成,在此郑重提醒三遍:科学上网,科学上网,科学上网。查看完整安装教程 →
npx skills add https://github.com/pproenca/dot-skills --skill ios-testing适用于 iOS 和 Swift 应用程序的全面测试指南,由首席工程师级别编写。包含 8 个类别共 44 条规则,按影响优先级排序,以指导测试架构决策、测试编写模式和 CI 基础设施。
本技能中的所有指导均假设采用诊所模块化 MVVM-C 架构:
Domain + DesignSystem(绝不导入 Data,也绝不导入同级功能模块)DependencyContainer、具体协调器以及 Route Shell 的连线Domain 保持纯 Swift,定义模型以及仓库、*Coordinating、ErrorRouting 和 AppError 契约Data 拥有 SwiftData/网络/同步/重试/后台 I/O 并实现 Domain 协议广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
在以下情况下参考这些指南:
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | 测试架构与可测试性 | 关键 | arch- |
| 2 | 单元测试基础 | 关键 | unit- |
| 3 | 测试替身与隔离 | 高 | mock- |
| 4 | 异步与并发测试 | 高 | async- |
| 5 | SwiftUI 测试 | 中高 | swiftui- |
| 6 | UI 与验收测试 | 中 | ui- |
| 7 | 快照与视觉测试 | 中 | snap- |
| 8 | 测试可靠性与 CI | 低中 | ci- |
arch-protocol-dependencies - 依赖协议,而非具体类型arch-constructor-injection - 使用构造函数注入而非服务定位器arch-test-target-separation - 分离单元测试和 UI 测试目标arch-testable-import - 谨慎使用 @testable importarch-single-responsibility-tests - 每个测试一个断言概念arch-arrange-act-assert - 按 Arrange-Act-Assert 结构组织测试unit-swift-testing-framework - 新测试使用 Swift Testing 而非 XCTestunit-parameterized-tests - 使用参数化测试处理输入变化unit-descriptive-test-names - 根据测试验证的行为命名测试unit-expect-over-assert - 使用 #expect 和 #require 而非 XCTAssertunit-require-preconditions - 使用 #require 处理测试前提条件unit-test-suites - 将相关测试组织到套件中unit-test-tags - 使用标签对横切关注点测试进行分类mock-protocol-based-mocks - 基于协议而非子类创建 Mockmock-spy-for-verification - 使用 Spy 验证交互mock-stub-return-values - 使用 Stub 提供确定性返回值mock-avoid-over-mocking - 避免过度 Mock 值类型和简单逻辑mock-fake-for-integration - 在集成测试中使用内存中的 Fakemock-dependency-container - 使用依赖容器进行测试配置async-await-directly - 在测试中直接 await 异步函数async-confirmation - 对基于回调的 API 使用 confirmation()async-mainactor-isolation - 在 MainActor 上测试 MainActor 隔离的代码async-actor-testing - 通过异步接口测试 actor 状态async-task-cancellation - 显式测试任务取消路径swiftui-test-observable-models - 将 @Observable 模型作为普通对象测试swiftui-environment-injection - 为测试注入环境依赖swiftui-preview-as-test - 将预览用作视觉冒烟测试swiftui-view-model-extraction - 将逻辑从视图中提取到可测试的模型中swiftui-binding-testing - 使用 @Bindable 测试绑定行为ui-accessibility-identifiers - 使用无障碍标识符进行元素查询ui-page-object-pattern - 将屏幕封装在页面对象中ui-launch-arguments - 通过启动参数配置测试状态ui-wait-for-elements - 等待元素而非使用 sleep()ui-test-user-journeys - 测试完整的用户旅程,而非单个屏幕ui-reset-state-between-tests - 在 UI 测试之间重置应用状态snap-swift-snapshot-testing - 使用 swift-snapshot-testing 进行视觉回归测试snap-device-matrix - 跨设备尺寸和特性进行快照测试snap-named-references - 使用命名的快照引用以提高清晰度snap-inline-snapshots - 对非图像断言使用内联快照ci-test-plans - 使用 Xcode 测试计划进行环境配置ci-parallel-execution - 启用并行测试执行ci-flaky-test-quarantine - 隔离不稳定的测试而非禁用它ci-deterministic-test-data - 使用确定性测试数据而非随机生成ci-coverage-thresholds - 为关键路径设置覆盖率阈值阅读各个参考文件以获取详细解释和代码示例:
| 文件 | 描述 |
|---|---|
| references/_sections.md | 类别定义和排序 |
| assets/templates/_template.md | 新规则模板 |
| metadata.json | 版本和参考信息 |
每周安装次数
46
代码仓库
GitHub 星标数
86
首次出现
2026年2月13日
安全审计
已安装于
codex43
github-copilot42
gemini-cli42
kimi-cli41
opencode41
amp40
Comprehensive testing guide for iOS and Swift applications, written at principal engineer level. Contains 44 rules across 8 categories, prioritized by impact to guide test architecture decisions, test authoring patterns, and CI infrastructure.
All guidance in this skill assumes the clinic modular MVVM-C architecture:
Domain + DesignSystem only (never Data, never sibling features)DependencyContainer, concrete coordinators, and Route Shell wiringDomain stays pure Swift and defines models plus repository, *Coordinating, ErrorRouting, and AppError contractsData owns SwiftData/network/sync/retry/background I/O and implements Domain protocolsReference these guidelines when:
| Priority | Category | Impact | Prefix |
|---|---|---|---|
| 1 | Test Architecture & Testability | CRITICAL | arch- |
| 2 | Unit Testing Fundamentals | CRITICAL | unit- |
| 3 | Test Doubles & Isolation | HIGH | mock- |
| 4 | Async & Concurrency Testing | HIGH | async- |
| 5 |
arch-protocol-dependencies - Depend on protocols, not concrete typesarch-constructor-injection - Use constructor injection over service locatorsarch-test-target-separation - Separate unit and UI test targetsarch-testable-import - Use @testable import sparinglyarch-single-responsibility-tests - One assertion concept per testunit-swift-testing-framework - Use Swift Testing over XCTest for new testsunit-parameterized-tests - Use parameterized tests for input variationsunit-descriptive-test-names - Name tests after the behavior they verifyunit-expect-over-assert - Use #expect and #require over XCTAssertunit-require-preconditions - Use #require for test preconditionsmock-protocol-based-mocks - Create mocks from protocols, not subclassesmock-spy-for-verification - Use spies to verify interactionsmock-stub-return-values - Use stubs for deterministic return valuesmock-avoid-over-mocking - Avoid mocking value types and simple logicmock-fake-for-integration - Use in-memory fakes for integration testsasync-await-directly - Await async functions directly in testsasync-confirmation - Use confirmation() for callback-based APIsasync-mainactor-isolation - Test MainActor-isolated code on MainActorasync-actor-testing - Test actor state through async interfaceasync-task-cancellation - Test task cancellation paths explicitlyswiftui-test-observable-models - Test @Observable models as plain objectsswiftui-environment-injection - Inject environment dependencies for testsswiftui-preview-as-test - Use previews as visual smoke testsswiftui-view-model-extraction - Extract logic from views into testable modelsswiftui-binding-testing - Test binding behavior with @Bindableui-accessibility-identifiers - Use accessibility identifiers for element queriesui-page-object-pattern - Encapsulate screens in page objectsui-launch-arguments - Configure test state via launch argumentsui-wait-for-elements - Wait for elements instead of using sleep()ui-test-user-journeys - Test complete user journeys, not individual screenssnap-swift-snapshot-testing - Use swift-snapshot-testing for visual regressionsnap-device-matrix - Snapshot across device sizes and traitssnap-named-references - Use named snapshot references for claritysnap-inline-snapshots - Use inline snapshots for non-image assertionsci-test-plans - Use Xcode Test Plans for environment configurationsci-parallel-execution - Enable parallel test executionci-flaky-test-quarantine - Quarantine flaky tests instead of disabling themci-deterministic-test-data - Use deterministic test data over random generationci-coverage-thresholds - Set coverage thresholds for critical pathsRead individual reference files for detailed explanations and code examples:
| File | Description |
|---|---|
| references/_sections.md | Category definitions and ordering |
| assets/templates/_template.md | Template for new rules |
| metadata.json | Version and reference information |
Weekly Installs
46
Repository
GitHub Stars
86
First Seen
Feb 13, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
codex43
github-copilot42
gemini-cli42
kimi-cli41
opencode41
amp40
测试策略完整指南:单元/集成/E2E测试金字塔与自动化实践
11,200 周安装
| SwiftUI Testing |
| MEDIUM-HIGH |
swiftui- |
| 6 | UI & Acceptance Testing | MEDIUM | ui- |
| 7 | Snapshot & Visual Testing | MEDIUM | snap- |
| 8 | Test Reliability & CI | LOW-MEDIUM | ci- |
arch-arrange-act-assertunit-test-suitesunit-test-tags - Use tags to categorize cross-cutting testsmock-dependency-containerui-reset-state-between-tests