最近はよくWidgetテストを書いている。Presentational Widget と Container Widgetに分けていて、Presentational Widgetは、Riverpodなどに依存せず、見た目のことにだけ集中出来て大変よい。テストも見た目のテストのことだけに集中できる。
Container WidgetがPresentational Widgetを使うという関係性なのだが、Container WidgetのテストではPresentational Widgetでテストしたことはテストしない。小さくテスト出来るのであれば、Presentational Widget側でテストするべきだと思う。
一方で、Widgetは他のWidgetの影響を受けやすいように感じる。例えば、状態AのときにBとCの項目が表示されていて、状態Dのときは表示されていないとか。1つのWidgetで完結していればいいが、離れている場所にあるとかだと難しい。そのときはうまく連携しているのかのテストを書く。Presentational Widgetに変更が入るとContainer Widgetのテストもコケて正直めんどいが、変更が入ったことに気づけてどのように変化するのか見れるのは良いことだと思う。
加えて、妙に長いテキストが入ったときとか文字サイズが変わったときとか、Widget同士で干渉してRenderFlex Overflowが起きないかというのは見たいように思える。Presentational Widgetごとに確認しても、結局他Widgetとの関係が影響するように思うので、広めで見てもいいように思える。
このあたりはGolden testである必要はなく、ランダムの値を使ってProperty based testingのようにテストするというのも出来て面白いかもしれない。