Life is Really Short, Have Your Life!!

ござ先輩の主に技術的なメモ

Flutterのテストは、ウィジェットレベルだけでよくね

Flutterには3段階のテストパターンが存在する。

  • Unit Test
  • Widget Test
  • Integration Test

アプリケーションの性質にもよるだろうけど、ローカル or HTTPでデータをフェッチして表示するというロジックが多くを占める場合、Unit Testでテストすることがかなり少ない。Model側にビジネスロジックがある場合(数の集計)ぐらいかなぁ。なので、UnitTestを書くシーンがあまりない。

購買するようなアプリケーションの場合、ユーザー目線だと、以下の手順を踏む。

  1. 商品を一覧から選ぶ(画面A)
  2. 数量を決めて追加を押す(画面B)
  3. お買い物かごに表示される(画面C)

WidgetTestになると、こういう感じかなぁ。

  • 画面A
    • 商品の一覧がリスト表示され、意図した箇所に情報が出ていること
    • スクロールしたらアイテムが追加されること
    • pull to refreshができること
    • タップしたらB画面に遷移する
  • 画面B
    • 必要な情報が意図したところに出ていること
    • 数量が増えたり減ったりすること
    • pull to refreshができること
    • タップしたらC画面に遷移する
  • 画面C
    • 必要な情報が意図したところに出ていること
    • アイテムの増減に伴い合計額などが変動すること

ウィジェットの動作が担保できているなら、頑張ってインテグレーション・テストを書くコストを取るべきなのか。それとも、インテグレーション・テストを頑張って書くのが良いのか。

・・・って思ったけど、ここで重要なのはE2Eの担保じゃなくて、ウィジェットの動きの担保だから、ウィジェット・テストで充分な気がするな。