【Xcode/iOS】XCTestでテストカバレッジを計測する方法!

【Xcode/iOS】XCTestでテストカバレッジを計測する方法!

この記事からわかること

  • SwiftXCTestテストカバレッジ計測する方法

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

環境

テストカバレッジとは?

テストカバレッジ」とはテストがソースコードのどの程度を実行したかを示す指標です。実装されているコードに対してテストコードを通過している割合を数値として把握することができるので、テストがどこまで網羅しているかを把握することができます。

テストカバレッジは実際にそのコードがテストで実行されているかどうかが重要になります。例えば以下のような実装コードがあるとします。


func greet(_ name: String) -> String {
    if name.isEmpty {
        return "Hello, Guest!"
    } else {
        return "Hello, \(name)!"
    }
}

そして以下のようなテストコードのみが実装されているとすると、テストカバレッジは100%になりません。これはreturn "Hello, Guest!"側のコードが通っていないためです。


func testGreet() {
    let result = greet("Ame")
    #expect(result == "Hello, Ame!")
}

そのためelse側のテストも追加するなど、テストで条件分岐のパターンなども網羅していくとテストカバレッジの値も上がっていきます。

Xcodeでテストカバレッジを計測する方法

Xcodeではテストカバレッジを計測することが可能です。カバレッジを計測するためのステップは以下の通りです。

  1. テストコードを導入
  2. 「Code Co Gather coverage for...」にチェックをいれる
  3. テストを実行

1.テストコードを導入

まずはテストコードを導入します。Xcodeでは「XCTest」と「Swift Testing」の2つの方法がありますが「Swift Testing」の方が新しく使い勝手も良いためおすすめです。テストコードの実装方法は以下の記事を参考にしてください。

2.「Code Co Gather coverage for...」にチェックをいれる

テストコードの実装が完了したらテストカバレッジを計測できるようにしていきます。カバレッジの計測設定はスキームごとに行います。「Edit Scheme...」から「Test」>「Code Co Gather coverage for...」にチェックをいれるだけです。

【Xcode/iOS】XCTestでテストカバレッジを計測する方法!

この際にカバレッジ計測対象のターゲットを選択することができるので「all targets」もしくは「some targets」を選択できます。「all targets」だとプロジェクト内の全てーのターゲット(ライブラリやフレームワークなど)も対象になってしまうため「some targets」で対象のターゲットを明示的に指定した方がカバレッジ率が把握しやすいです。

3.テストを実行

実際にカバレッジを確認するためにはまずテストを実行します。実行すると左側のナビゲータエリアの「Report Navigator(⌘9)」から「Coverage」が追加されていることを確認できます。ここをクリックするとターゲット内のファイルごとにテストカバレッジ率が表示されるようになります。

【Xcode/iOS】XCTestでテストカバレッジを計測する方法!

ファイルをクリックするとコードに飛ぶことができます。コードからは実行された箇所は緑色に、実行されていない箇所は赤色にハイライトされるので網羅できていない箇所を確認しながらテストコードを追加していけばOKです。

【Xcode/iOS】XCTestでテストカバレッジを計測する方法!

テストコードがないのにテストカバレッジ率に値が理由

テストコードを記述していないのにテストカバレッジ率に値があることがあります。これはどうやらテスト実行の際にアプリが起動すると思うのですがその際に実行されたコードもカバレッジに含まれるようです。

実際にテストコードはないですが、アプリが問題なく起動しているので動作的に問題ないという判断になっているのかもしれません。

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

Search Box

Sponsor

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article