[Flutter] Получаем реальное покрытие тестами для приложений на Flutter (перевод)

Автор Сообщение
news_bot ®

Стаж: 6 лет 3 месяца
Сообщений: 27286

Создавать темы news_bot ® написал(а)
07-Июл-2021 16:30


https://unsplash.com/photos/dQf7RZhMOJUПокрытие приложения тестами - один из самых важных принципов в разработке. У тестов есть множество безусловных достоинств: они помогают избежать багов, регрессии и экономят много денег.Во Flutter есть несколько видов написания тестов:
  • Unit-тесты
  • Widget-тесты
  • Integration-тесты
Как порядочный разработчик, Flutter приложения вы будете писать вместе с тестами.Запуск тестовВо Flutter есть встроенная команда для запуска и отображения состояния тестирования. Выглядит она так:
Эта команда запустит тесты и создаст файл с результатами по пути coverage/lcov.info. Обратите внимание, что отчеты о покрытии могут отсутствовать. Команда будет вычислять только те тесты, которых достигнет. Если файл недоступен для точки входа, выполняющей покрытие, то VM(виртуальная машина) никогда его не увидит и, следовательно, не вернет никакой информации о покрытии. Тестирование неохваченных файловНа Github есть открытая тема по этому вопросу, но официального решения пока что нет. К счастью, некоторые члены сообщества придумали обход этой проблемы.Вам просто нужно добавить все файлы во входную точку тестов. Таким образом, виртуальная машина будет знать какие файлы являются частью экосистемы проекта.
По-хорошему, вы не должны добавлять все эти зависимости вручную! Давайте напишем скрипт, который будет добавлять все необходимые файлы.
С помощью команды выше вы создаете файл coverage_helper_test.dart в папке test. В него будут добавляться все необходимые импорты.
Этот скрипт просто проходится по всем файлам в папке lib, определяя путь до них с приставкой package: и добавляя их как импорты.Здесь нужно отметить, вероятно вы не хотели бы, чтобы сгенерированные файлы были частью расчетов, т.к вы их не писали сами. Поэтому путь не добавляется, если файл сгенерирован библиотекой.Теперь у вас есть список файлов, которые будут учтены в покрытии кода тестами (coverage).Обновление результатов lcovТеперь, если вы запустите тесты с покрытием, оно будет лучше, но все еще будут затрагиваться сгенерированные файлы.Как уже отмечалось, скорее всего, вы не хотите, чтобы сгенерированные файлы были отображены в результатах тестов, так как эти файлы вы не пишите. Вы можете убрать их из файла lcov.info.Для этого можно использовать библиотеку lcov.
Теперь lcov.info готов к дальнейшему использованию, а если точнее, то к генерации процента.Загружаем результаты на Codecov с помощью Github ActionsCodecov - один из самых известных сайтов по покрытию кода. Множество библиотек, такие как Bloc, используют его чтобы показать покрытие кода и его распределение.Этот сайт бесплатный для проектов с открытым исходным кодом. Так что, если вы разработчик OSS, это отличный вариант для вас.
Для начала, создайте файл gather_files.sh в папке test.Подготовьте ваш файл Github Actions и убедитесь, что добавили туда следующее:
Все что нужно сделать, это загрузить файл lcov, созданный ранее, в Codecov Action.Как только процесс завершится, проект на Codecov обновится и выдаст отчет.Напоследок, убедитесь, что вы добавляете и удаляете файл coverage_helper_test до и после Github Action. Вам не стоит добавлять сгенерированные файлы в VCS.Теперь после такой реализации вы сможете получать полное покрытие для ваших проектов. Идите вперед и пишите невероятные тесты сейчас!
===========
Источник:
habr.com
===========

===========
Автор оригинала: Muhammed Salih Guler
===========
Похожие новости: Теги для поиска: #_flutter, #_flutter, #_testy (Тесты), #_blog_kompanii_rosselhozbank (
Блог компании Россельхозбанк
)
, #_flutter
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 15-Май 09:08
Часовой пояс: UTC + 5