🎈

Flutterの自動テスト Step0 ~全体像~

2023/11/06に公開

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

Flutterのテストは何種類かありますが、
どれから手を付けていいのかわからないという方のために
step by stepで説明します。

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

まずは全体のお話

Flutterの自動テストは大きく3つに分かれています。

  • Unit Test
  • Widget Test
  • Integration Test

それぞれの特徴を表にするとこんな感じです

Unit Widget Integration
信頼度 最高
メンテナンスコスト 最高
依存度 最多
実行速度 速い 速い 最遅

それぞれの特徴

Unit Test

class単体/関数単体をテストします。
一番簡単に書けるテストですので、1st stepにはもってこいのテストです。
外部に依存しないビジネスロジックをテストするのに向いています。
対象の関数が期待通り/仕様通りに動作するかを確認します。
対象の関数内で使っている別の関数の動作に依存しないようにmockを利用したりします。

Widget Test

その名の通り、Widgetをテストします。
Widgetを単体で起動し、Widgetをタップ等の操作をして期待通りの表示になっているか等を確認します。
flutter createで作成されるテストがこちらです。
mockを使えば依存関係を切ることができ、単体テストとして使うことができます。
条件によって表示される/されないをテストするのに向いています。

また、Widget Testの中に Golden Testと呼ばれるテストも存在します。
これはWidgetを実際に描画して、画像として期待通りかを確認するテストです。
通常のWidget Testは描画せず、Widget tree上に文字列やIcon等があるかを確認したりしますが、
Golden Testは描画するのが特徴です。
意図せぬ画面差分に気がつくための利用が向いています。

Integration Test

公式の説明
基本的にエミュレータを使ってテストします。
完全にビルドしたアプリをエミュレータ上で起動して、タップやスクロール等の操作を自動で行い、
問題が無いか確認します。
実行が遅く、依存ライブラリが多いと動かすこと自体難しいです。

(私はまだ動かせていないので、Integration Testの記事までたどり着けるのか怪しいですw)

次の記事はこちら

https://zenn.dev/yu1ro/articles/80564b54cc9c79

最後に(宣伝)

友人と個人開発でゲーミフィケーション記録アプリ「HibaQuest」を作っています。
https://hiba.quest

Discussion