iOS の家計簿アプリをつくる(単体テスト編)

advent_calendar アドベントカレンダー

はじめに

こちらは個人開発アプリができるまで by am10 Advent Calendar 2024の 21 日目の記事です。

21 日目は単体テストについてです。
以下の記事を参考に Swift Testing でテストを作成していきます。

Swiftの新テストライブラリ「swift-testing」特徴と導入

公式ドキュメントは下記です。

Swift Testing | Apple Developer Documentation
Create and run tests for your Swift packages and Xcode projects.

やること

今回テストするのは Models の部分になります。

1

全部書くのは大変なので必要そうな下記のみでいいでしょう。

  • ExpenseLogAPI(HTTP リクエストを生成するやつ)
  • Database(日付や項目で家計簿データをフィルターするやつ)
  • ReceiptDataFormatter(読み取ったレシートの文字列を解析するやつ)

上記がこのアプリのメイン機能部分になるのでここが動けばまあ問題ないでしょう。

ExpenseLogAPI のテスト

ExpenseLogAPITests.swift ファイルを作成して下記のように実装します。

ここでは家計簿データの取得・登録処理 API の値が想定通り設定されていることを確認しています。

Database のテスト

DatabaseTests.swift ファイルを作成して下記のように実装します。

ここでは年画面・月画面で表示するデータの抽出処理に問題ないか確認しています。失敗しやすそうな 2 月のデータを重点的にみています。

ReceiptDataFormatter のテスト

ReceiptDataFormatterTests.swift ファイルを作成して下記のように実装します。

ここでは 2 パターンの形式のレシートデータから品名と金額が取得できることを確認しています。

コードカバレッジ確認

最後に cmd + U でテストを起動しコードカバレッジを確認します。公式ドキュメントに見方が書いてあります。

Determining how much code your tests cover | Apple Developer Documentation
Use code coverage to focus new test development on areas that lack adequate testing.

左の Navigator の一番右の「Show the Report navigator」をクリックすると見られます。

2

31%!!!

Code Coverage Best Practices
By Carlos Arguelles, Marko Ivanković‎, and Adam Bender We have spent several decades driving software testing initiatives in various very la...

こちらの記事を見ると下記のように書いてあります。

Although there is no “ideal code coverage number,” at Google we offer the general guidelines of 60% as “acceptable”, 75% as “commendable” and 90% as “exemplary.”

60% が許容範囲のようですがまあ今回はいいでしょう。

おわりに

テストもばっちりなのでいよいよリリースが見えてきました!もうアップデートもこわくないです!!

明日はストア用のスクショを作成します。

Amazon.co.jp

コメント

タイトルとURLをコピーしました