Files
claude-config/rules/swift/testing.md
Yaojia Wang 2876cca8fe chore: initial backup of Claude Code configuration
Includes: CLAUDE.md, settings.json, agents, commands, rules, skills,
hooks, contexts, evals, get-shit-done, plugin configs (installed list
and marketplace sources). Excludes credentials, runtime caches,
telemetry, session data, and plugin binary cache.
2026-03-24 22:26:05 +01:00

1005 B

paths
paths
**/*.swift
**/Package.swift

Swift Testing

This file extends common/testing.md with Swift specific content.

Framework

Use Swift Testing (import Testing) for new tests. Use @Test and #expect:

@Test("User creation validates email")
func userCreationValidatesEmail() throws {
    #expect(throws: ValidationError.invalidEmail) {
        try User(email: "not-an-email")
    }
}

Test Isolation

Each test gets a fresh instance — set up in init, tear down in deinit. No shared mutable state between tests.

Parameterized Tests

@Test("Validates formats", arguments: ["json", "xml", "csv"])
func validatesFormat(format: String) throws {
    let parser = try Parser(format: format)
    #expect(parser.isValid)
}

Coverage

swift test --enable-code-coverage

Reference

See skill: swift-protocol-di-testing for protocol-based dependency injection and mock patterns with Swift Testing.