Я пытаюсь использовать go test -cover
для измерения тестового покрытия службы, которую я создаю. Это REST API, и я тестирую его, откручивая его, выполняя тестовые HTTP-запросы и просматривая ответы HTTP. Эти тесты не являются частью пакетов услуг, а go tool cover
возвращает 0% тестового покрытия. Есть ли способ получить фактическое покрытие теста? Я бы ожидал, что сценарий с наилучшим сценарием на данной конечной точке будет охватывать не менее 30-50% кода для конкретного обработчика конечных точек и путем добавления дополнительных тестов для общей ошибки для дальнейшего улучшения.Как измерить покрытие интеграции интеграции Golang?
ответ
Я был указал на директиву -coverpkg
, которая делает то, что мне нужно - измерять s охват тестирования в определенном пакете, даже если тесты, которые используют этот пакет, а не его часть. Например:
$ go test -cover -coverpkg mypackage ./src/api/...
ok /api 0.190s coverage: 50.8% of statements in mypackage
ok /api/mypackage 0.022s coverage: 0.7% of statements in mypackage
по сравнению с
$ go test -cover ./src/api/...
ok /api 0.191s coverage: 71.0% of statements
ok /api/mypackage 0.023s coverage: 0.7% of statements
В приведенном выше примере, у меня есть тесты в main_test.go
которых находится в package main
, что использует package mypackage
. Меня больше всего интересует охват package mypackage
, так как он содержит 99% бизнес-логики в проекте.
Я новичок в Go, поэтому вполне возможно, что это не лучший способ измерить охват тестирования с помощью интеграционных тестов.
Насколько я знаю, если вы хотите покрытия, вам нужно запустить go test -cover
.
Однако достаточно просто добавить флаг, который вы можете передать, в который будут включены эти дополнительные тесты, чтобы вы могли сделать их частью своего набора тестов, но не запускаете их нормально.
Так что добавьте флаг командной строки в вашем whatever_test.go
var integrationTest = flag.Bool("integration-test", false, "Run the integration tests")
Затем в каждом тесте сделать что-то вроде этого
func TestSomething(t *testing.T){
if !*integrationTest {
t.Skip("Not running integration test")
}
// Do some integration testing
}
Затем запустить интеграционные тесты
go run -cover -integration-test
Спасибо за ваш комментарий, но это не совсем то, что мне нужно. Проблема заключалась в том, что процент охвата не распространяется на код в других пакетах проекта. Я уточню свой вопрос, чтобы отразить это и сделать его более ясным. –
@antonevangelatov Я понимаю, что вы имеете в виду! Я оставлю этот ответ на всякий случай, если кто-нибудь найдет его полезным, и я замечаю '-coverpkg' в вашем ответе, спасибо! –
- 1. Содержит ли SonarQube 5.1.1 покрытие интеграции интеграции?
- 2. Тесты интеграции Golang HTTP
- 3. Golang с проблемой интеграции couchbase
- 4. Покрытие для теста интеграции через Jacoco Agent
- 5. Тестовое покрытие интеграции Jenkins и Jacoco
- 6. Как написать тест интеграции golang с MySQL
- 7. покрытие голанг-кода в тестах интеграции?
- 8. Тестирование интеграции ОСГИ и покрытие кода
- 9. Как измерить покрытие phpDoc?
- 10. Как измерить покрытие теста
- 11. Тест интеграции интеграции Akka
- 12. подробности интеграции интеграции google
- 13. Тест интеграции интеграции весны
- 14. Тест интеграции интеграции SEAM
- 15. Тест интеграции интеграции Grails
- 16. Тест интеграции интеграции с Laravel
- 17. Запуск интеграции интеграции с Grails
- 18. API-интерфейс интеграции интеграции Woocommerce
- 19. Ошибки интеграции интеграции PayPal API
- 20. Как настроить тест интеграции на основе интеграции
- 21. тест интеграции интеграции Grails 2
- 22. Тест интеграции интеграции Spring @PathVariable
- 23. Ошибка интеграции интеграции Grails 2.3.8
- 24. Hybris commerce - интеграция интеграции интеграции
- 25. Как измерить спецификации оборудования для сервера непрерывной интеграции (Jenkins)?
- 26. Как измерить покрытие кода TCL?
- 27. охват тестирования интеграции сонара
- 28. Невозможно использовать покрытие интеграции с помощью сонара в многомодульном проекте
- 29. покрытие кода для тестирования интеграции Scala с SCCT
- 30. пользовательская интеграция исходящих шлюзов интеграции интеграции
Отлично! Я просто связываю этот [соответствующий поток golang-орехов] (https://groups.google.com/forum/#!topic/golang-nuts/fnDBPPUDdQ4). – Simon
Спасибо, Саймон. Это действительно то, что я искал! –