flutter testで全体のカバレッジが正しく出力されない場合の直し方
flutterでテストを書いてflutter test --coverage
でテスト実行してgenhtml
やcodecovでカバレッジを見たら「1ファイルしかテスト書いてないのに100%どういうこと!!???」というときの対処方法です。
原因
flutter(というかdart?)のcoverage生成のオプションではテストファイルから読み込んだテスト対象ファイルしかカバレッジの母数に含めてくれない様子。たぶん。
解決策
こちらのrepoにあるbashをclone, chmodしてproject rootで実行してからflutter test --coverage
すれば万事OK。コマンドも丁寧にReadmeに書いてあります。
https://github.com/priezz/dart_full_coverage
もしlib配下のdartファイルを増やしたらもう一度シェルを叩く必要があります。
スクリプトの仕組み
上記のbashスクリプトは test/coverate_test.dart
というファイルを作り、その中に全てのlib配下のdartファイルを全てimportしてくれています。そしてmain()
の中身を空にすることで「coverage_test.dart
ではテストはしないが、テストファイルからいったんlib配下のdartファイルを全部読み込むことでカバレッジの母数に含めさせる」という状態を一発で作ってくれます。
具体的には以下のようなファイルが出来上がります。
(略)
import 'package:myapp/bloc/aaa_bloc.dart';
import 'package:myapp/bloc/bbb_bloc.dart';
import 'package:myapp/bloc/ccc_bloc.dart';
(略)
import 'package:myapp/widgets/aaa_page.dart';
import 'package:myapp/widgets/bbb_page.dart';
import 'package:myapp/widgets/ccc_page.dart';
(略)
void main() {}
たったこれだけですが、ちゃんとカバレッジがlib配下全体に対するデータになります。
以上、これで疑心暗鬼なままテストを書く心配が無くなりますね。
Author And Source
この問題について(flutter testで全体のカバレッジが正しく出力されない場合の直し方), 我々は、より多くの情報をここで見つけました https://qiita.com/gki/items/a861d7ac1c61d6de928e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .