Как измерить покрытие кода в Golang?



кому-нибудь удалось создать покрытие кода для модульных тестов Go? Я не могу найти инструмент для этого в интернете.

1305   9  

9 ответов:

отметим, что Go 1.2 (Q4 2013, rc1 доступен) теперь будет отображаться результаты тестового покрытия:

одна главная новая особенность go test это теперь он может вычислять и, с помощью нового, отдельно установленного "go tool cover " программа, отображение результатов тестового покрытия.

The cover инструмент является частью go.tools subrepository. Он может быть установлен работает

$ go get golang.org/x/tools/cmd/cover

инструмент крышки делает две вещи.

  • во-первых, когда "go test" предоставлено -cover флаг, он запускается автоматически для перезаписи источника для пакета и вставки инструкций инструментирования. Затем тест компилируется и запускается в обычном режиме, а базовая статистика покрытия сообщается:
$ go test -coverprofile fmt
ok      fmt 0.060s  coverage: 91.4% of statements
$

во-вторых, для более детальных отчетов, различные флаги для "go test" могут создайте файл профиля покрытия, который программа покрытия вызывает с помощью "go tool cover", может после этого проанализировать.

Фрэнк Sheararупоминает:

последние версии Go (2013/09/19) использование:

go test -coverprofile <filename> <package name>

подробнее о том, как генерировать и анализировать статистические данные можно найти, выполнив команды

$ go help testflag
$ go tool cover -help

Иван Черный упоминает в комментариях:

go test -coverprofile cover.out а то
go tool cover -html=cover.out -o cover.html открывает cover.html в браузере

я даже не хочу ждать открытия браузера, поэтому я определил этот псевдоним:

alias gc=grep -v -e " 1$" coverage.out

что я просто типа gc, и есть список всех строк не еще покрыты (здесь: с coverage.out строка не заканчивая " 1").

Go поставляется с удивительным инструментом для тестирования и покрытия. Хотя все инструменты Go хорошо документированы go tool cover -help Я бы предложил чтение статья с обложкой на официальном блоге Go. У него есть много примеров и я настоятельно рекомендую его!

у меня есть эта функция в моем ~/.файл. (вы можете просто вставить его в терминал, чтобы дать ему попробовать).

cover () { 
    t="/tmp/go-cover.$$.tmp"
    go test -coverprofile=$t $@ && go tool cover -html=$t && unlink $t
}

потом просто cd в папку go project / package и введите cover. Это открывает визуальный элемент инструмент в браузере, который показывает вам проверенный и непроверенный код для каждого файла в текущем пакете. Очень полезная команда! Я настоятельно рекомендую его для поиска того, что еще не испытанное 100%! Показанные результаты за файл. Из выпадающего списка в левом верхнем углу вы можете увидеть результаты для всех файлов.

С помощью этой команды вы также можете проверить любой пакет, например:

cover fmt

вывод в терминале из этой команды будет быть:

ok      fmt 0.031s  coverage: 91.9% of statements

в дополнение к этому в вашем браузере вы увидите этот инструмент, показывающий красным цветом все строки кода, которые не покрыты тестами:

enter image description here

также можно просто сохранить файл покрытия html вместо того, чтобы открывать его в браузере. Это очень полезно в тех случаях, когда ваши тесты + покрытие выполняется инструментом CI, как Дженкинс. Таким образом, вы можете обслуживать файлы покрытия с центрального сервера, и вся команда сможет увидеть покрытие результаты для каждой сборки.

это правильно здесь, документы здесь.

$ go tool
6a
6c
6g
6l
addr2line
api
cgo
cov
dist
ebnflint
fix
gotype
nm
objdump
pack
pprof
prof
vet
yacc
$ go tool cov -h
usage: cov [-lsv] [-g substring] [-m minlines] [6.out args...]
-g specifies pattern of interesting functions or files
go tool cov: exit status 1
$

Я не использовал его, это все, что я знаю.

вдохновленный меню справки и другие ответы на этот вопрос, просто запустите:

f=cover.out; if [ -f $f ]; then rm $f; fi; go test -coverprofile $f && go tool cover -html $f

попробуйте использовать gaia-docker / base-go-build Образов Docker.

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

docker run --rm -v "$PWD":$PROJECT_PATH -w $PROJECT_PATH $BUILDER_IMAGE_NAME /go/script/coverage.sh

на тестовый сценарий покрытия работает на всех папках проектов и генерирует, внутри .обложка папка junit и покрытие отчеты для каждой папки и сводный отчет о покрытии всех тестов проектов.

тестовое покрытие для Golang

go get github.com/axw/gocov/gocov go get -u gopkg.in/matm/v1/gocov-html

проверьте, что он установлен правильно, и у вас есть доступ с вашего терминала

запустите тестовый случай

если вы запустите тестовый случай, он будет Reder .JSON-файл на основе файла вы получите отчет о покрытии кода .html файл

gocov test >your_Coverage_report.json

как только ваш тестовый случай будет выполнен, создайте отчет.использование html-файла .формат JSON

gocov-html your_Coverage_report.json >your_Coverage_report.html

ссылка

GoTest инструмент покрытия для go lang

Go Test Report Tool

Альтернативный Метод

Go Native test coverage

go test -coverprofile=coverage.out
go tool cover -html=coverage.out

Если вы хотите видеть непокрытые линии по функции непосредственно в терминале, я переписал инструмент обложки для этой цели. Он доступен по адресу https://github.com/gregoryv/uncover.

использование

go get -u github.com/gregoryv/uncover/...
go test -coverprofile /tmp/c.out
uncover /tmp/c.out

скриншот

enter image description here

быстрый и простой способ-использовать инструмент покрытия, который поставляется со встроенным go :

$ go test-coverprofile cp.вон // Испускает покрытие в одном линейном проценте мудрый

после выполнения вышеуказанной команды, если вы хотите визуально увидеть покрытие кода (например, покрытые операторы и пропущенные и т. д.)

$ go tool cover-html=cp.вон

Примечание : вам нужно выполнить выше команды в папке, где вы хотите увидеть покрытие

в дополнение к хорошим ответам выше, я считаю, что эти три строки являются самым простым способом получить его (который включает в себя все пакеты):

go test -v -coverprofile cover.out ./YOUR_CODE_FOLDER/...
go tool cover -html=cover.out -o cover.html
open cover.html

обратите внимание, что в HTML-файле вы найдете выпадающую кнопку, которая направит вас ко всем файлам.

Comments

    Ничего не найдено.