«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как измерить тестовое покрытие для интеграционных тестов Go?

Как измерить тестовое покрытие для интеграционных тестов Go?

Опубликовано 16 ноября 2024 г.
Просматривать:552

How to Measure Test Coverage for Go Integration Tests?

Определение тестового покрытия в интеграционных тестах Go

Интеграционные тесты направлены на оценку функциональности системы в целом, часто путем имитирования или контроля внешние зависимости. Однако определение тестового покрытия интеграционных тестов создает уникальные проблемы.

Измерение покрытия в непакетных тестах

В описанном сценарии тесты отделены от пакетов. они тестируют. Следовательно, команда go test -cover сообщает о покрытии 0%. Чтобы решить эту проблему, можно использовать директиву -coverpkg.

Использование -coverpkg для определения покрытия конкретного пакета

Директива -coverpkg позволяет измерить покрытие тестами в указанном пакет, даже если тесты внешние. В качестве аргумента он принимает путь к пакету.

Например, следующая команда измеряет покрытие пакета mypackage:

$ go test -cover -coverpkg mypackage ./src/api/...

Этот подход позволяет целенаправленно анализировать покрытие пакета в интеграционных тестах.

Вывод примера покрытия

Рассмотрим пример, где пакет API содержит тесты в main_test.go. Большая часть бизнес-логики находится в пакете mypackage. Выполнение команды с -coverpkg обеспечивает более точное представление покрытия:

$ go test -cover -coverpkg mypackage ./src/api/...
ok      /api    0.190s  coverage: 50.8% of statements in mypackage
ok      /api/mypackage   0.022s  coverage: 0.7% of statements in mypackage

Эти выходные данные показывают, что тесты охватывают 50,8% операторов в пакете mypackage. Напротив, без использования -coverpkg покрытие будет выше и составит 71,0%, что связано с тестами, выходящими за рамки указанного пакета.

Дополнительные соображения

Это того стоит отметив, что интеграционные тесты обычно охватывают меньше кода, чем модульные тесты, из-за сложности макетирования и характера общесистемного тестирования. Однако описанный выше подход дает возможность измерить фактический охват интеграционными тестами конкретно для соответствующих пакетов.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3