0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Flutter Test のカバレッジをマージする

Posted at

課題

Flutter で Unit Test と Integration Test を作成し、カバレッジを計測できるようにしました。
しかし、それぞれの結果をマージする方法がわからず、全体としてテストのカバレッジを計測することができていませんでした。。。

前提

テストを行いカバレッジを計測できる環境であるとします。

  • /test ディレクトリに Unit Test コードがあること
  • /integration_test ディレクトリに Integration Test コードがあること
  • 必要なパッケージが導入されていること(テストが実行できる状態)
  • lcov がインストールされていること

やりたいこと

  • Unit Test をカバレッジ計測ありで実行する
  • Integration Test をカバレッジ計測ありで実行する
  • それぞれのカバレッジ結果をマージする
  • マージされた結果を html に変換して表示する

スクリプト

#!/bin/bash

# Coverage の出力先ディレクトリを作成
mkdir -p coverage

# build_runner を実行してテストファイル自動生成を行う
flutter pub run build_runner build --delete-conflicting-outputs

# ユニットテストを実行して、カバレッジを取得する
flutter test --coverage --coverage-path ./coverage/lcov_test.info

# 統合テストを実行して、カバレッジを取得する
flutter test --coverage --coverage-path ./coverage/lcov_integration_test.info integration_test

# ユニットテストと統合テストのカバレッジをマージ
lcov -a coverage/lcov_integration_test.info -a coverage/lcov_test.info -o coverage/lcov_merged.info

# 自動生成されたコードを対象から外す
lcov --remove coverage/lcov_merged.info 'lib/**.g.dart' -o coverage/lcov_result.info --ignore-errors unused

# 統合テストとユニットテストのカバレッジをマージしたものを HTML に変換
genhtml coverage/lcov_result.info --output=coverage/html

# 結果(HTML)をブラウザで開く
open coverage/html/index.html

最後に

今回は全てのテストを実施して結果をマージする方法を知ることができました。
しかし、テストが増えると毎回全てのテストを実施するのは辛いので、テストの単位を小さくできて全てをマージできるようにしたいですね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?