Flutterの自動テスト Step0 ~全体像~
Flutter 自動テスト シリーズについて
Flutterのテストは何種類かありますが、
どれから手を付けていいのかわからないという方のために
step by stepで説明します。
一連の記事を「本」(無料)にまとめました。
まずは全体のお話
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)
次の記事はこちら
最後に(宣伝)
友人と個人開発でゲーミフィケーション記録アプリ「HibaQuest」を作っています。
Discussion