技能创建器
skill-creator
创建、改进和评估自定义技能,把专业流程转化为可重复使用的 AI 能力。
ios-testing【数据与研究】Testing practices for iOS 26 / Swift 6.2 clinic modular MVVM-C applications. Covers unit/UI/snapshot testing, protocol-based mocks, async actor isolation, and dependency-injected test architecture aligned with Domain protocols, App-target composition, and Data-owned I/O boundaries. Use when writing, reviewing, or refactoring tests for ios-* and swift…
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
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 | 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-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 testarch-arrange-act-assert - Structure tests as Arrange-Act-Assertunit-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 preconditionsunit-test-suites - Organize related tests into suitesunit-test-tags - Use tags to categorize cross-cutting testsmock-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 testsmock-dependency-container - Use a dependency container for test configurationasync-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 screensui-reset-state-between-tests - Reset app state between UI testssnap-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 |