0Pricing
Swift Academy · レッスン

XCTestCaseのセットアップ、ティアダウン、テストメソッド

setUp/tearDownを使ってテストクラスを構成し、テストメソッドに名前を付けます。

「XCTestCaseのセットアップ、ティアダウン、テストメソッド」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全4レッスンが含まれています。

XCTestCase の基本

XCTestCase は、すべての Swift 単体テストの基底クラスです。"test" で始まる各メソッドがテストケースになります。

import XCTest

final class MathTests: XCTestCase {
  func testAddition() {
    XCTAssertEqual(2 + 2, 4)
  }
}

setUp と tearDown

setUp() は各テストの前に実行されます。tearDown() は各テストの後に実行されます。共有状態の初期化と後片付けに使用します。

final class UserServiceTests: XCTestCase {
  var sut: UserService!
  override func setUp() {
    super.setUp()
    sut = UserService()
  }
  override func tearDown() {
    sut = nil
    super.tearDown()
  }
}

setUpWithError と tearDownWithError

setUp/tearDown のエラーをスローできるバリエーションです。セットアップでエラーがスローされると、テストは自動的に失敗として記録されます。

override func setUpWithError() throws {
  sut = try UserService(config: loadTestConfig())
}
override func tearDownWithError() throws {
  try sut.cleanup()
}

クラスレベルのセットアップ

class setUp() と class tearDown() は、クラス内のすべてのテストの前後に一度だけ実行されます。コストの高い共有リソースに適しています。

final class DBTests: XCTestCase {
  static var db: TestDatabase!
  override class func setUp() {
    super.setUp()
    db = TestDatabase.inMemory()
  }
  override class func tearDown() {
    db.close()
    super.tearDown()
  }
}

テストメソッドの命名

読みやすく、失敗時のメッセージを明確にするため、テストには test_methodName_condition_expectedResult の形式で名前を付けます。

func test_login_withValidCredentials_returnsUser() throws { ... }
func test_login_withInvalidPassword_throwsUnauthorized() throws { ... }

addTeardownBlock

tearDown をオーバーライドせずに、テストごとの後片付けブロックをその場で登録します。

func testCreateFile() throws {
  let url = FileManager.default.temporaryDirectory.appendingPathComponent("test.txt")
  addTeardownBlock { try? FileManager.default.removeItem(at: url) }
  // ... test
}

テストの無効化

テストメソッドの先頭に _ を付けるか、コメントアウトしてスキップします。XCTest では XCTSkipIf によるスキップもサポートされています。

func testExperimentalFeature() throws {
  try XCTSkipIf(ProcessInfo.processInfo.environment["CI"] != nil, "Skip on CI")
  // ... test
}

テストメソッドでのスローは不可(Xcode 16 より前)

以前の Xcode では、throws として宣言されたテストメソッドのエラーは、XCTAssertNoThrow を介してテストの失敗として伝播されます。

func testDecode() throws {
  let user = try JSONDecoder().decode(User.self, from: validJSON)
  XCTAssertEqual(user.name, "Alice")
}

テストの明示的な失敗

XCTFail("reason") を呼び出すと、説明的なメッセージを付けてテストを強制的に失敗させられます。

func testCallback() {
  var called = false
  service.doWork { called = true }
  if !called { XCTFail("Callback was never invoked") }
}

テストプラン

Xcode のテストプランを使用すると、異なる構成(言語、環境変数、サニタイザー)で同じテストを実行できます。

// File → New → Test Plan
// Add test targets and configure per-configuration env vars
// Useful for running localized UI tests or with Address Sanitizer

並列テスト

Xcode のスキーム設定で並列テストを有効にすると、テストクラスを同時に実行して、テスト全体の時間を短縮できます。

// Product → Scheme → Test → Options → Execute in parallel
// Each XCTestCase class runs in a separate process
// Ensure tests are independent and don't share global state

確認問題

各テストの前ではなく、クラス内のすべてのテストの前に一度だけ実行される XCTestCase のメソッドはどれですか。

レッスンのまとめ

テストごとのセットアップと後片付けには setUp/tearDown(またはエラーをスローするバリエーション)をオーバーライドします。クラスごとに一度だけ必要なリソースには class setUp/tearDown を使用します。テストには説明的な名前を付けます。その場での後片付けには addTeardownBlock、条件付きのスキップには XCTSkipIf を使用します。

よくある質問

「XCTestCaseのセットアップ、ティアダウン、テストメソッド」レッスンは無料ですか?

はい。「XCTestCaseのセットアップ、ティアダウン、テストメソッド」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全4レッスンが含まれています。

「XCTestCaseのセットアップ、ティアダウン、テストメソッド」で何を学びますか?

setUp/tearDownを使ってテストクラスを構成し、テストメソッドに名前を付けます。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Swift Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「XCTestCaseのセットアップ、ティアダウン、テストメソッド」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このSwift Academyレッスンでコードを書いて実行できますか?

はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. XCTestCaseのセットアップ、ティアダウン、テストメソッド
  2. XCTAssertファミリーとthrowingアサーション
  3. プロトコルベースのモックと依存性注入
  4. 非同期テストとパフォーマンス計測
← Swift Academyに戻る