Чи комусь вдалося створити покриття коду для тестів Go unit? Я не можу знайти інструмент для цього в Інтернеті.
Чи комусь вдалося створити покриття коду для тестів Go unit? Я не можу знайти інструмент для цього в Інтернеті.
Відповіді:
Зауважте, що 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 (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
відкриєтьсяcover.out
у вашому браузері за замовчуванням
Я навіть не хочу чекати, коли браузер відкриється, тому я визначив цей псевдонім:
alias gc=grep -v -e " 1$" cover.out
Я просто набираю gc
і маю список усіх рядків, які ще не охоплені (тут: coverage.out
рядок, що не закінчується на " 1
").
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
я б запропонував прочитати статтю з обкладинки на офіційному блозі Go . У ній є маса прикладів, і я настійно рекомендую!
Ця функція у мене в моєму ~ / .bash_profile. (ви можете просто вставити його в термінал, щоб спробувати).
cover () {
t="/tmp/go-cover.$$.tmp"
go test -coverprofile=$t $@ && go tool cover -html=$t && unlink $t
}
Потім просто cd
в папку go / project / pack і введіть cover
. Це відкриває візуальний інструмент у браузері, який показує вам перевірений і неперевірений код для кожного файлу в поточному пакеті. Дуже корисна команда! Я настійно рекомендую це знайти те, що ще не перевірено на 100%! Показані результати по файлу. Зі спадного меню вгорі ліворуч ви бачите результати для всіх файлів.
За допомогою цієї команди ви також можете перевірити покриття будь-якого пакета, наприклад:
cover fmt
Вихід у терміналі з цієї команди буде:
ok fmt 0.031s coverage: 91.9% of statements
На додаток до цього у вашому браузері ви побачите, що цей інструмент червоним кольором показує всі рядки коду, які не покриті тестами:
Можна також просто зберегти файл покриття html, а не відкривати його у браузері. Це дуже корисно в тих випадках, коли ваші тести + охоплення виконуються інструментом CI на зразок Дженкінса. Таким чином ви можете обслуговувати файли покриття з центрального сервера, і вся команда зможе побачити результати покриття для кожної збірки.
Окрім гарних відповідей, наведених вище, я вважаю, що ці три рядки є найпростішим способом їх отримання (який включає всі пакунки):
go test -v -coverprofile cover.out ./YOUR_CODE_FOLDER/...
go tool cover -html=cover.out -o cover.html
open cover.html
Зауважте, що у файлі HTML ви знайдете кнопку, що спадає, що направить вас на всі файли.
Це прямо тут , деякі документи тут .
$ 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
$
Я не користувався цим, це все, що я знаю.
~/go/pkg/tool/linux_amd64
матчах моєї останньої збірки Go вчора.
Якщо ви хочете бачити непокриті лінії за функцією безпосередньо в терміналі, я переписав інструмент обкладинки для цієї мети. Доступний за адресою https://github.com/gregoryv/uncover .
Використання
go get -u github.com/gregoryv/uncover/...
go test -coverprofile /tmp/c.out
uncover /tmp/c.out
Знімок екрана
Якщо ви використовуєте VSCode, ця функція підтримується у вікні ( але відключена за замовчуванням )
Просто увімкніть тест із збереження + звітування про покриття
https://github.com/microsoft/vscode-go/wiki/On-Save-features
Він навіть покаже у вашому редакторі, які рядки не охоплені, що дуже зручно.
Звіт про покриття →
a) Виконати всі тести та включити охоплення -> go test ./... -coverprofile coverage.out
b) Отримайте покриття окремих функцій, а також загальне покриття → go tool cover -func coverage.out
c) Дивіться покриті рядки та ті, які не охоплені вашими тестами → go tool cover -html=cover.out -o coverage.html
. Відкрийте coverage.html
створений у браузері файл і проаналізуйте детальну інформацію про покриття.
Швидкий і простий спосіб - використовувати інструмент покриття, який постачається із вбудованим ходом:
$ go test -coverprofile cp.out // Емітує покриття в одному відсотку вкладиша
Після виконання вищевказаної команди, якщо ви бажаєте візуально побачити покриття коду (як-от викладені заяви та пропущені тощо)
$ go tool cover -html = cp.out
Примітка. Потрібно виконати вищезазначені команди в папці, де ви хочете бачити покриття
Спробуйте використовувати gaia-docker / base-go-build Docker Image.
Це зображення Докера, яке містить все необхідне для складання та тестування покриття. Запуск тестового покриття всередині контейнера Docker створює папку .cover з результатами тестового покриття вашого проекту.
docker run --rm -v "$PWD":$PROJECT_PATH -w $PROJECT_PATH $BUILDER_IMAGE_NAME /go/script/coverage.sh
Сценарій тестового покриття , що працює на всі проекти папку і створює усередині .Накрить папки JUnit і покриття звітів для кожної папки, і комбайна звіту охоплення всіх проектів випробувань.
Codecov також пропонує сценарій, який збирає результати покриття: кілька файлів
Тестове покриття для Golang
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 для переходу
Перейдіть на інструмент звіту про випробування
Альтернативний метод
Перейдіть на покриття Native Test
go test -coverprofile=coverage.out
go tool cover -html=coverage.out
go test -coverprofile <filename> <package name>