🐙

Flutterの自動テスト Step3 〜Parameterized Testにする〜

2023/12/20に公開

Flutter 自動テスト シリーズについて

Flutterの自動テストをStep by Stepで説明しています。

一連の記事を「本」(無料)にまとめました。
https://zenn.dev/yu1ro/books/2b5f8d32cc2668

Parameterized Testとは

ここまででも多くのテストをできるようになったのですが、
コピペでコードをどんどん増やすのはイマイチです。

そこで、共通のコードはしっかり共有して、
入力値と期待値だけ量産するスタイルのことです。

Parameterized testにしてみる

前回の記事で作成したテストをParameterized testにしてみましょう。

  group('getLatestSunday', () {
    <DateTime, DateTime>{
      DateTime(2022, 6, 21): DateTime(2022, 6, 19),
      DateTime(2022, 6, 26): DateTime(2022, 6, 26),
      DateTime(2022, 6, 27): DateTime(2022, 6, 26),
      DateTime(2022, 6, 25): DateTime(2022, 6, 19),
    }.forEach((initialTime, expected) {
      test('initialTime: $initialTime => expected: $expected', () {
        fakeAsync(initialTime: initialTime, (_) {
          expect(getLatestSunday(), expected);
        });
      });
    });
  });

test部分が共通にすることができました。
このようにすることで、入力値と期待値のセットをたくさん用意することが簡単になります。

動作するコードはこちら

https://github.com/yu1ro/step_by_step_test

最後に(宣伝)

友人と個人開発でゲーミフィケーション記録アプリ「HibaQuest」を作っています。
よければお試しください。
https://hiba.quest

上記のコードはこのアプリのテストでも実際に使われています。

Discussion