Flutterで単体テストの実行時間を86%削減した話をしようか

Dart

概要

どうも、@daiki1003です!

みなさん、テストしていますか?
プロジェクトがある程度の規模感になると、単体テストはほぼ必須になってくるかなと思います。
そして単体テストに力を入れていれば、CIにも組み入れていることでしょう。

でも、Flutterのテストって地味に時間かかりませんか?
そこで本記事ではFlutterのテストを高速化できる方法を解説していきたいと思います。

それでは行ってみましょー!

どんな黒魔術を使うの?

これからさぞすごいことが行われるのだろう?と胸を躍らせているかもしれないのですが至ってシンプル。

very_good_cli | Dart packageを導入するだけです。

very_good_cliを導入してみよう

パッケージとして存在していますが、特に依存パッケージとして追加する必要はありません。

$ dart pub global activate very_good_cli

を実行するだけでOK。

テストの実行時間を比較してみる

flutter test

flutter testを3回実行した結果がこちらです。

平均で27秒ほどかかっています。

very_good test

初回、実行してみると Optimizing...が5秒くらいかかった後、10秒ほどで終わる。
合わせても16秒弱なので、すでに約50%削減w

2回目以降はOptimizingのフェーズがほぼ瞬時に終了し、テスト時間も短縮しなんと合計5秒程度!

最長31秒から、最短で5秒ほどなのでなんと86%も削減されている…!
使わない理由があるのだろうか…。

一旦落ち着いて考えてみる

どうやら、少し調べてみると受け取れる引数の数が違いそうだ。
(見づらいですが、記事の本質ではないので許してね。)

flutter test –helpvery_good test –help

もう明らかに減ってそうですよね。

でも、大丈夫。

$ flutter test --no-track-widget-creation

を実行したければ

$ very_good test -- --no-track-widget-creation

とすれば実行出来ます。

つまり、very_good testの後に--を打ち、その後に必要な引数を追加するだけです。

あかん、very_good testを使わない理由が見つからない…。
しかもな、おかんが言うにはさらにvery_good testの利点があるって言うんや。

不要なpub getを実行しない

Test 🧪 | Very Good CLIによると、flutter testと違い、very_good testは実行時にpub getを行わないそうです。
ですが、手元で確認したところ、flutter testの実行前にpub getを行っている様な挙動は確認できませんでした。

どなたか詳しくご存知の方がいらっしゃいましたら教えてください!

最後に

いかがでしたでしょうか?
もし、very_good_cliを今すぐに試してみたいと思ってくれていたらこの記事を書いた甲斐があると言うものです。

【Flutter】very_good_analysisの導入で修正が必要になった13個の項目
誰に向けた記事? - 何らかのlinterは導入してはいるが、今以上厳しくしてみたいなと思っている方 - very_good_analysis | Dart Packageを知らない方 - very_good_analysis |...

very_good_analysisについても書かせていただきましたが、very_good_ventures社には頭が上がらないです…笑

ちなみに、このパッケージの使い方に関しては Lucas Goldner | 金さん 💙に教えてもらいました!大感謝!

誰かのお役に立てば。

Twitterフォローお願いします

「次回以降も記事を読んでみたい!」
「この辺分からなかったから質問したい!」

そんな時は、是非Twitter (@daiki1003)Instagram (@ashdik_flutter)のフォローお願いします♪

Twitterコミュニティ参加お願いします

Twitterコミュニティ「Flutter lovers」を開設しました!
参加お待ちしております😁

☕️ Buy me a coffee

また、記事がとても役に立ったと思う人は
コーヒーを奢っていただけると非常に嬉しいです!
@daiki1003

コメント

タイトルとURLをコピーしました