Определение тестового покрытия в интеграционных тестах 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