TGViewer
Flutter. Много Flutter. Много @flutter_amiga · 2.96K subscribers
Post #345 2.22K
Hola Amigos! На связи Павел Гершевич, Mobile Team Lead в Amiga. Сегодня снова затронем тему автоматического тестирования, а точнее получение процента покрытия нашего кода тестами ⚙️

Первый шаг — запустить тесты с параметром coverage:


flutter test --coverage


Эта команда сгенерирует файл с информацией о покрытии, но для его расшифровки понадобится инструмент lcov, доступный только для Unix-систем.

Установка lcov

Для Linux (на примере Ubuntu):


sudo apt-get update -qq -y
sudo apt-get install lcov -y


Для macOS:


brew install lcov


Генерация отчета в HTML

Далее, конвертируем полученный файл в удобный для чтения HTML-формат:


genhtml coverage/lcov.info -o coverage/html


Теперь в папке coverage/html можно просматривать отчет по покрытию. Однако тут возникает проблема: отчет может не учитывать все файлы вашего проекта, так как покрываются только те файлы, которые явно были импортированы в тесты.

Решение проблемы с неполным покрытием

Чтобы охватить все файлы, нужно импортировать их в тесты через специальный файл, например, coverage_helper_test.dart. Этот процесс можно автоматизировать с помощью скрипта:


file=test/coverage_helper_test.dart
echo "// Helper file to make coverage work for all files\n" > $file
echo "// ignore_for_file: unused_import" > $file
find lib -name "*.dart" "!" -name "*.g.dart" | cut -c4- | awk -v package="my_package" '{printf "import '\''package:%s%s'\'';\n", package, $1}' >> $file
echo "void main(){}" >> $file


Тут мы создаем файл coverage_helper_test.dart, ставим игнорирование определенного правила статического анализа на один файл и импортируем наши файлы.

⚙️ Важное правило: не импортировать файлы, которые были сгенерированы, можно дополнять такой скрипт файлами от freezed и других библиотек. В конце добавляем метод main, чтобы импорты попали в покрытие.

Автоматизация на CI/CD

Скрипт сохраняем в файл с расширением .sh и запускаем перед тестами.


./coverage_helper.sh


Все эти шаги можно интегрировать в ваш CI/CD процесс для автоматической проверки покрытия кода тестами.

А как вы подходите к тестированию? Какие используете методики? 🙂
  • 🔥 10
  • 👍 5
  • 🥰 4
More from @flutter_amiga
  1. Sep 9, 2026AI BOOST’26: выручка падает — что делают крупные digital-агентства и при чем здесь AI 22–2…
  2. Aug 18, 2026Hola, Amigos! На связи Павел Гершевич, Mobile Team Lead в Amiga. Сегодня посмотрим на чек-…
  3. Aug 13, 2026Hola, Amigos! Сегодня вышли Flutter 3.47 и Dart 3.13. Давайте вместе разберемся, что в них…
  4. Jul 31, 2026Дайджест июля Hola, Amigos! Собрали в одну подборку все полезные посты июля, которые вы мо…
  5. Jul 28, 2026Hola, Amigos! Сегодня посмотрим на один пакет, который может быть полезен в разработке - p…
  6. Jul 24, 2026Hola, Amigos! Сегодня мы вводим новую рубрику - обзоры правил для статического анализатора…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →