qori.dev

Mendapatkan Test Coverage Sepenuhnya Pada Flutter

· Qori El-Hafizh

flutter test --coverage akan melakukan pengujian dan membuat laporan. Permasalahannya adalah command tersebut tidak akan melaporkan pengujian file yang tidak dipanggil oleh flutter test. Sehingga, jika anda belum membuat file test nya maka akan luput dari presentase test coverage.

Untuk mengatasi masalah itu, kita dapat menggunakan bash script yang membuat file helper yang mengimport file code pada lib sehingga “dikunjungi” oleh Dart VM saat flutter test --coverage .

Berikut script-nya

#!/bin/sh
file=test/coverage_helper_test.dart
printf "// Helper file to make coverage work for all dart files\n" > $file
printf "// **************************************************************************\n" >> $file
printf "// Because of this: https://github.com/flutter/flutter/issues/27997#issue-410722816\n" >> $file
printf "// DO NOT EDIT THIS FILE USE: sh scripts/import_files_coverage.sh YOUR_PACKAGE_NAME\n" >> $file
printf "// **************************************************************************\n" >> $file
printf "\n" >> $file
printf "// ignore_for_file: unused_import\n" >> $file
find lib -type f \( -iname "*.dart" ! -iname "*.g.dart" ! -iname "*.freezed.dart" ! -iname "generated_plugin_registrant.dart" \) | cut -c4- | awk -v package="$1" '{printf "import '\''package:%s%s'\'';\n", package, $1}' >> $file
printf "\nvoid main(){}" >> $file

Anda dapat menyimpan script tersebut pada scripts/import_files_coverage.sh . Jalankan script tersebut dengan sh scripts/import_files_coverage.sh YOUR_PACKAGE_NAME. dimana YOUR_PACKAGE_NAME adalah nama package dari project Flutter anda. Script tersebut akan membuat file test/coverage_helper_test.dart