Flutterのテストは、ウィジェットレベルだけでよくね
Flutterには3段階のテストパターンが存在する。
- Unit Test
- Widget Test
- Integration Test
アプリケーションの性質にもよるだろうけど、ローカル or HTTPでデータをフェッチして表示するというロジックが多くを占める場合、Unit Testでテストすることがかなり少ない。Model側にビジネスロジックがある場合(数の集計)ぐらいかなぁ。なので、UnitTestを書くシーンがあまりない。
購買するようなアプリケーションの場合、ユーザー目線だと、以下の手順を踏む。
- 商品を一覧から選ぶ(画面A)
- 数量を決めて追加を押す(画面B)
- お買い物かごに表示される(画面C)
WidgetTestになると、こういう感じかなぁ。
- 画面A
- 商品の一覧がリスト表示され、意図した箇所に情報が出ていること
- スクロールしたらアイテムが追加されること
- pull to refreshができること
- タップしたらB画面に遷移する
- 画面B
- 必要な情報が意図したところに出ていること
- 数量が増えたり減ったりすること
- pull to refreshができること
- タップしたらC画面に遷移する
- 画面C
- 必要な情報が意図したところに出ていること
- アイテムの増減に伴い合計額などが変動すること
ウィジェットの動作が担保できているなら、頑張ってインテグレーション・テストを書くコストを取るべきなのか。それとも、インテグレーション・テストを頑張って書くのが良いのか。
・・・って思ったけど、ここで重要なのはE2Eの担保じゃなくて、ウィジェットの動きの担保だから、ウィジェット・テストで充分な気がするな。