9 ответов:
отметим, что Go 1.2 (Q4 2013, rc1 доступен) теперь будет отображаться результаты тестового покрытия:
одна главная новая особенность
go testэто теперь он может вычислять и, с помощью нового, отдельно установленного "go tool cover" программа, отображение результатов тестового покрытия.The
coverинструмент является частьюgo.toolssubrepository. Он может быть установлен работает$ 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", может после этого проанализировать.последние версии 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в дополнение к этому в вашем браузере вы увидите этот инструмент, показывающий красным цветом все строки кода, которые не покрыты тестами:
также можно просто сохранить файл покрытия 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 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скриншот
быстрый и простой способ-использовать инструмент покрытия, который поставляется со встроенным 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