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

Как я могу получить покрытие кода с помощью интеграционных тестов для двоичного файла Go?

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

How Can I Capture Code Coverage from Integration Tests Against a Go Binary?

Захват покрытия кода из двоичного файла Go

При выполнении модульных тестов захват покрытия кода прост. Однако сбор показателей покрытия во время интеграционных тестов самого двоичного файла может оказаться сложной задачей. Есть ли способ преодолеть это препятствие?

Необходимость покрытия интеграционными тестами

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

Задача

Инструмент покрытия Go работает только в сочетании с пакет тестирования. Это создает проблему для интеграционных тестов, которые обычно не вписываются в эту структуру.

Решение: интеграционные тесты в среде тестирования Go

Чтобы получить покрытие от интеграционных тестов , нам нужно каким-то образом интегрировать их в пакет тестирования.

  1. Создайте тестовый файл: Создайте тестовый файл, который выполняет вашу функцию main() в горутине.
func TestMainApp(t *testing.T) {
    go main()
    // ... Start integration tests here
}
  1. Выполнение интеграционных тестов: Используйте exec.Cmd для запуска интеграционных тестов за пределами горутины, созданной ранее.
  2. Соберите статистику покрытия: Наконец, соберите статистику охвата с помощью инструмента охвата.

Другие ресурсы

Предыдущее обсуждение этой темы можно найти в статье «Go охват с внешними тестами», в котором исследуется сопоставимый подход.

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

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

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

Copyright© 2022 湘ICP备2022001581号-3