🐾 Всем привет, я блогер Cat Head Tiger! Сегодня мы поговорим о покрытии кода интеграционного тестирования на языке Go. Это запутанная тема для разработчиков, но она имеет решающее значение. Я расскажу о новых функциях Go 1.20, которые дают нам более широкие возможности тестирования покрытия кода. Если вы хотите знать, как оптимизировать качество кода в Go, продолжайте читать! 🐱💻
Инструменты покрытия кода — это важные инструменты, используемые разработчиками для определения того, какие части базы исходного кода выполняются (покрываются) при выполнении определенного набора тестов. Хотя Go всегда поддерживал измерение покрытия кода на уровне пакета, для более крупных приложений Go, особенно для интеграционного тестирования, этого инструмента недостаточно. Последняя версия Go 1.20 наконец-то предлагает решение этой проблемы.
Интеграционное тестирование языка Go обычно включает в себя создание полных двоичных файлов приложения и последующий запуск этих двоичных файлов на репрезентативном наборе входных данных, чтобы убедиться, что все пакеты компонентов работают вместе правильно. Но поскольку двоичные файлы интеграционных тестов создаются с использованием «go build» вместо «go test», набор инструментов Go имеет ограничения при сборе покрытия для этих тестов.
В Go 1.20 появилась возможность создавать программы с помощью инструментов покрытия, используя «go build -cover». Это означает, что теперь мы можем включать эти оснащенные двоичные файлы в интеграционные тесты, расширяя тем самым объем тестирования покрытия.
Давайте в качестве примера возьмем инструмент обработки уценки, используя «mdtool».,Покажите, как написать для него простую интеграцию.,и из него Соберите данные о покрытии。Долженинструмент Создан, чтобы показать, как клиенты используютgitlab.com/golang-commonmark/markdown
этотmarkdownизменятьHTMLбиблиотека。
Сначала скачиваем копию «mdtool» и переключаемся на конкретную версию, чтобы обеспечить повторяемость шагов:
$ git clone https://gitlab.com/golang-commonmark/mdtool.git
...
$ cd mdtool
$ git tag example e210a4502a825ef7205691395804eefce536a02f
$ git checkout example
...
$
Мы написали Простой для "mdtool" скрипт интеграционного теста,Этот скрипт создает двойные файлы «mdtool».,Затем запустите его на наборе входных файлов уценки.,Убедитесь, что он выдает какой-то результат и не дает сбоя.
$ cat integration_test.sh
#!/bin/sh
BUILDARGS="$*"
...
$
Мы написали еще один скрипт-оболочку, который вызывает предыдущий скрипт для создания покрытия и постобработки для инструмента:
$ cat wrap_test_for_coverage.sh
#!/bin/sh
...
$
После завершения теста интеграции покрытия,Мы можем выполнить постобработку файлов необработанных данных различными способами.,Например, профили покрытия конвертируются в текстовый формат или Объединить исходные конфигурации.
Используйте `go Tool cov
С помощью команды data textfmt` мы можем сгенерировать файл конфигурации в текстовом формате из файлов в каталоге GOCOVERDIR.
$ go tool covdata textfmt -i=covdatafiles -o=cov.txt
...
$
использоватьgo tool covdata merge
Заказ,Мы можем объединить файлы данных из разных интеграционных процессов.
$ go tool covdata merge -i=covdatafiles -o=merged
...
$
Из этой статьи мы узнали о Go 1.20 Как преодолеть прошлые ограничения и получить поддержку данные о покрытия. Это имеет решающее значение для понимания эффективности сложных тестов и того, как они перезаписывают исходный код. Это я в голове кошки тигризGoВ рубрике «Экологическая аналитика»из Еще один шедевр,Нажмите, чтобы узнать подробностиздесь。
Ключевые моменты | иллюстрировать |
---|---|
Перейти к интеграционному тестированию | Создавайте полные двоичные файлы приложений и тестируйте поведение всей программы. |
Новые возможности Go 1.20 | Создайте программу с помощью инструмента покрытия, используя «go build -cover». |
пример mdtool | Простой инструмент обработки уценок для демонстрации интеграционного тестирования и сбора покрытия. |
Обработка данных о покрытии | Преобразование и объединение файлов данных покрытия для повышения эффективности анализа. |