0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

🔰Swiftでテストコードを書いたこと無い人へ

Last updated at Posted at 2025-03-11

実務で使ってないし...
どれほど便利か分からないし...

そう思ってテストコード書いたことない方へ!

改めて基礎を学んだら意外とスムーズに理解できるので、Swiftのテストコード基本知識をまとめてみました!

Swiftのテストコード = XCTest(フレームワーク)

と思ってもらってOKらしいです。

🤭Swift6.0からTestingという新たなフレームワークも出ましたがまずはXCTestをサクッと学ぼう!
Testing

XCTestを使うと、手動で動作確認しなくても、自動でコードの動作をチェックできる ようになります。

本記事では、XCTestの基本を解説しながら、実際のコード例も交えて紹介します。

XCTestとは?

XCTestは、Appleが提供する単体テストのためのフレームワークです。

✅ アプリのバグを早く見つける → 手動で動かさなくてもチェックできる
✅ 修正による影響を防ぐ → 変更した部分が他に影響を与えていないか確認できる
✅ 安心して開発できる → 自動テストがあれば、新しい機能を追加するときも安心!

では、早速 XCTestの基本的な使い方を見ていきましょ!

XCTestの基本構成

Swiftのテストを書くには、XCTestCase を継承したクラスを作ります。

基本の流れは次の通り:

1. テストクラスを作成する
2. 初期化テストメソッドを書く
3. XCTAssertで結果をチェックする

1.テストクラスを作成する

Swift(UI)アプリを作ると、自動でテスト用のファイルを生成できます。例えば、MyAppTests.swift というファイルがあった場合、こんな感じのコードが入っています。

自動で作成せずとも後から自分で作成することもできますよ!

import XCTest
@testable import MyApp  // 自分のアプリのコードをテストできるようにする

final class MyAppTests: XCTestCase {
    override func setUp() {
        // 各テストの前に呼ばれる
        super.setUp()
    }

    override func tearDown() {
        // 各テストの後に呼ばれる
        super.tearDown()
    }

    func testExample() {
        // ここにテストを書く
    }
}

2.初期化テストメソッドを書く

基本的にoverrideメソッドは以下2つ。

setUp

override func setUp() {
    super.setUp()
    // 各テストが実行される前に呼ばれる
}

テストの前に準備をするメソッドです。
例えば、データを初期化したり、テスト用のオブジェクトを作成するのに使います。

tearDown

override func tearDown() {
    // 各テストが終わった後に呼ばれる
    super.tearDown()
}

テストが終わった後に後片付けをするメソッドです。
例えば、一時ファイルを削除したり、メモリを開放する処理を入れます。

3.XCTAssertで結果をチェックする

テストでは、XCTAssert を使って値をチェックします。
基本はXCTAssert◯◯◯メソッドで判定します。(XCTFailは例外!)

1.XCTAssertEqual(値が等しいかチェック)

XCTAssertEqual(2 + 3, 5)  // OK
XCTAssertEqual("Hello", "hello")  // NG(大文字・小文字が違う)

「左と右の値が等しいか?」 をチェックします。

2.XCTAssertNotEqual(値が異なるかチェック)

XCTAssertNotEqual(2 + 3, 6)  // OK(5と6は違う)

「左と右の値が違うか?」 を確認します。

3.XCTAssertTrue(条件がtrueか?)

let isUserLoggedIn = true
XCTAssertTrue(isUserLoggedIn)  // OK

「この値はtrueか?」 をチェックします。

4.XCTAssertFalse(条件がfalseか?)

let isUserLoggedIn = false
XCTAssertFalse(isUserLoggedIn)  // OK

「この値はfalseか?」 をチェックします。

5.XCTAssertNil(値がnilか?)

let value: String? = nil
XCTAssertNil(value)  // OK

「この値はnilか?」 を確認します。

6.XCTAssertNotNil(値がnilでないか?)

let value: String? = "Hello"
XCTAssertNotNil(value)  // OK

「この値はnilでないか?」 を確認します。

7.XCTFail(失敗を強制する)

XCTFail("このテストは失敗する")

このメソッドを実行すると、必ずテストが失敗 します。
「ここに来るべきではない」といったケースをチェックするのに使います。

実際にテストを書いてみよう!

例として、「文字列を逆にする関数」を作って、それをテストしてみます。

まず、StringReverser というクラスを作ります。

class StringReverser {
    func reverse(_ input: String) -> String {
        return String(input.reversed())
    }
}

次に、この関数が 正しく動くかチェックする XCTestを書きます。

import XCTest
@testable import MyApp  // 自分のアプリのコードをテストできるようにする

final class StringReverserTests: XCTestCase {
    var reverser: StringReverser!
    
    override func setUp() {
        super.setUp()
        reverser = StringReverser()
    }
    
    override func tearDown() {
        reverser = nil
        super.tearDown()
    }
    
    func testReverse() {
        let result = reverser.reverse("Hello")
        XCTAssertEqual(result, "olleH", "Hello を逆にすると olleH にな!")
    }
}

これを実行すると…
✅ Hello を逆にすると olleH になるかチェックしてくれます!

まとめ

XCTestを使うと、Swiftのコードを自動でテストできる!

✅ setUp はテストの前に準備する
✅ tearDown はテストの後に後片付けをする
✅ XCTAssertを使って、値をチェックできる

Future Work

新しいApple純正テストフレームワークを使ってみたい未来の自分用メモ
Apple Document - Testing

Quiita記事

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?