Кому-нибудь удалось создать покрытие кода для модульных тестов Go? Я не могу найти в Интернете инструмент для этого.
источник
Кому-нибудь удалось создать покрытие кода для модульных тестов Go? Я не могу найти в Интернете инструмент для этого.
Обратите внимание, что Go 1.2 (Q4 2013, доступен rc1) теперь будет отображать результаты тестового покрытия :
Одной из основных новых функций
go test
является то, что теперь он может вычислять и с помощью новой, отдельно установленнойgo tool cover
программы " " отображать результаты покрытия тестами .
cover
Инструмент является частьюgo.tools
subrepository . Его можно установить, запустив
$ go get golang.org/x/tools/cmd/cover
Инструмент обложки выполняет две функции.
- Во-первых, когда
go test
установлен-cover
флаг "", он запускается автоматически, чтобы переписать исходный код пакета и вставить операторы инструментария. Затем тест компилируется и запускается как обычно, и выдается базовая статистика покрытия:
$ go test -coverprofile fmtcoverage.html fmt
ok fmt 0.060s coverage: 91.4% of statements
$
Во-вторых, для более подробных отчетов с помощью различных флагов «пройти тест» можно создать файл профиля покрытия, который
go tool cover
затем может анализировать программа покрытия, вызванная с помощью « ».
В последних версиях Go (19.09.2013) используются:
go test -coverprofile <filename> <package name>
Подробную информацию о том, как генерировать и анализировать статистику покрытия, можно найти, выполнив команды
$ go help testflag
$ go tool cover -help
Иван Черный упоминает в комментариях :
go test -coverprofile cover.out
а затем
go tool cover -html=cover.out
открываетсяcover.out
в вашем браузере по умолчанию
Я даже не хочу ждать, пока откроется браузер, поэтому я определил этот псевдоним:
alias gc=grep -v -e " 1$" cover.out
То, что я просто ввести gc
, и есть список всех строк не еще покрыты (здесь: с coverage.out
линии не заканчивается " 1
«).
go test -coverprofile <filename> <package name>
go test -coverprofile cover.out
а затемgo tool cover -html=cover.out -o cover.html
открытьcover.html
в браузереgo tool cover -html=cover.out
автоматически откроет браузер, но в моей системе это не работает. Я предпочитаю держать браузер открытым и при необходимости обновлять страницу.Go поставляется с отличным инструментом для тестирования и покрытия. Несмотря на то, что все инструменты Go хорошо документированы,
go tool cover -help
я бы посоветовал прочитать статью The Cover story в официальном блоге Go . В нем много примеров, и я настоятельно рекомендую!У меня есть эта функция в моем ~ / .bash_profile. (вы можете просто вставить его в терминал, чтобы попробовать).
Затем просто
cd
перейдите в папку проекта / пакета и введитеcover
. Это открывает визуальный инструмент в браузере, который показывает проверенный и непроверенный код для каждого файла в текущем пакете. Очень полезная команда! Я настоятельно рекомендую его для поиска того, что еще не на 100% протестировано! Показанные результаты для каждого файла. В раскрывающемся списке в верхнем левом углу вы можете увидеть результаты для всех файлов.С помощью этой команды вы также можете проверить охват любого пакета, например:
cover fmt
Результатом этой команды в терминале будет:
В дополнение к этому в вашем браузере вы увидите, что этот инструмент показывает красным все строки кода, которые не покрыты тестами:
Также можно просто сохранить файл покрытия html вместо того, чтобы открывать его в браузере. Это очень полезно в тех случаях, когда ваши тесты + покрытие выполняется с помощью инструмента CI, такого как Jenkins. Таким образом, вы можете обслуживать файлы покрытия с центрального сервера, и вся команда сможет видеть результаты покрытия для каждой сборки.
источник
В дополнение к хорошим ответам, приведенным выше, я считаю, что эти три строки являются самым простым способом получить его (включая все пакеты):
Обратите внимание, что в файле HTML вы найдете кнопку раскрывающегося списка, которая направит вас ко всем файлам.
источник
Это прямо здесь , некоторые документы здесь .
Я не использовал его, это все, что я знаю.
источник
~/go/pkg/tool/linux_amd64
моей последней сборке Go за вчерашний день.Если вы хотите видеть непокрытые строки по функциям непосредственно в терминале, я переписал для этой цели инструмент покрытия. Он доступен по адресу https://github.com/gregoryv/uncover .
использование
Скриншот
источник
Если вы используете VSCode, эта функция поддерживается из коробки ( но по умолчанию отключена )
Просто включите тест при сохранении + отчеты о покрытии
https://github.com/microsoft/vscode-go/wiki/On-Save-features
Он даже покажет в вашем редакторе, какие строки не покрыты, что очень удобно.
источник
Отчет о покрытии →
а) Запустите все тесты и включите покрытие ->
go test ./... -coverprofile coverage.out
б) Получите покрытие для отдельных функций, а также общее покрытие →
go tool cover -func coverage.out
c) См. покрытые и не охваченные вами строки →
go tool cover -html=cover.out -o coverage.html
. Откройтеcoverage.html
созданный таким образом файл в браузере и проанализируйте подробную информацию о покрытии.источник
Быстрый и простой способ - использовать инструмент покрытия, который поставляется со встроенным go:
После выполнения указанной выше команды, если вы хотите визуально увидеть покрытие кода (например, покрытые операторы, пропущенные и т. Д.)
Примечание: вам необходимо выполнить указанные выше команды в папке, в которой вы хотите увидеть покрытие.
источник
Вдохновленный меню помощи и другими ответами на этот вопрос, просто запустите:
источник
Попробуйте использовать образ Docker с помощью gaia-docker / base-go-build .
Это образ Docker, содержащий все, что вам нужно для создания и тестирования покрытия. Выполнение тестового покрытия внутри контейнера Docker создает папку .cover с результатами тестового покрытия вашего проекта.
Сценарий тестового покрытия , работающий на все проекты папку и создает внутри .Накрыть папки JUnit и покрытие отчетов для каждой папки, и комбайна отчета охвата всех проектов испытаний.
Codecov также предлагает сценарий, который собирает результаты покрытия: несколько файлов
источник
go get github.com/axw/gocov/gocov go get -u gopkg.in/matm/v1/gocov-html
Убедитесь, что он установлен правильно и у вас есть доступ с вашего терминала
Если вы запустите тестовый пример, он будет перерисовывать файл .json на основе файла, вы получите отчет о покрытии кода в файле .html.
gocov test >your_Coverage_report.json
После того, как ваш тестовый пример будет выполнен, сгенерируйте отчет в файле .html, используя .json
gocov-html your_Coverage_report.json >your_Coverage_report.html
Ссылка
Инструмент покрытия GoTest для go lang
Инструмент отчета о тестировании Go
Покрытие Go Native Test
источник