[Flutter] Получаем реальное покрытие тестами для приложений на Flutter (перевод)
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
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
===========Похожие новости:
- [Open source, Flutter] Тап в статус бар. Делаем простое сложно c помощью Flutter
- [Open source, API, Dart, Flutter] Как перестать писать код для взаимодействия с бэкендом
- [Usability] Надо ли дизайнеру разбираться в верстке?
- [Open source, Разработка мобильных приложений, Flutter] Flutter плагин для импорта стикеров в телеграм
- [Dart, Flutter] gRPC + Dart, Сервис + Клиент, напишем? Часть 3
- [Робототехника, Научно-популярное, 3D-принтеры, Будущее здесь] Цифровизация ресторанного бизнеса
- [Разработка мобильных приложений, Flutter] Внедрение зависимостей (Dependency Injection) с GetIt на примере Flutter-проекта
- [Dart, Flutter] gRPC + Dart, Сервис + Клиент, напишем? Часть 2
- [Анализ и проектирование систем, Проектирование и рефакторинг, Хранение данных, Прототипирование] Что нам стоит дом построить? (часть 2)
- [Dart, Flutter] gRPC + Dart, Сервис + Клиент, напишем
Теги для поиска: #_flutter, #_flutter, #_testy (Тесты), #_blog_kompanii_rosselhozbank (
Блог компании Россельхозбанк
), #_flutter
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 13:53
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
https://unsplash.com/photos/dQf7RZhMOJUПокрытие приложения тестами - один из самых важных принципов в разработке. У тестов есть множество безусловных достоинств: они помогают избежать багов, регрессии и экономят много денег.Во 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 |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 13:53
Часовой пояс: UTC + 5