-coverprofile исключая непроверенные файлы из процента покрытия - PullRequest
0 голосов
/ 29 сентября 2018

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

└── example
    ├── bar
    │   └── main.go
    ├── baz
    │   └── main.go
    ├── foo
    │   ├── main.go
    │   └── main_test.go
    └── qux
        └── main.go

Однако при запуске я получаю странный вывод.Процент покрытия, по-видимому, относится только к единственному протестированному файлу, а не ко всей базе кода под example.

Например:

$ go test -race -v -coverprofile .test-coverage.txt ./...
?       github.com/abcdef/example/bar    [no test files]
?       github.com/abcdef/example/baz      [no test files]
=== RUN   TestSum
--- PASS: TestSum (0.00s)
PASS
coverage: 50.0% of statements
ok      github.com/abcdef/example/foo     1.018s  coverage: 50.0% of statements
?       github.com/abcdef/example/qux    [no test files]

Кто-нибудь знает, почему это происходит, и есть лиКак я могу сделать это сгенерировать процентное покрытие для всех файлов, включая любые непроверенные файлы?В противном случае процент покрытия полностью вводит в заблуждение.

1 Ответ

0 голосов
/ 29 сентября 2018

Используйте флаг -coverpkg, описанный так:

Примените анализ покрытия в каждом тесте к пакетам, соответствующим шаблонам.По умолчанию для каждого теста анализируется только тестируемый пакет.Смотрите 'go help packages' для описания шаблонов пакетов.Устанавливает -cover.

Пример:

go test -race -v -coverprofile .test-coverage.txt -coverpkg=example ./...

Это говорит о необходимости включения пакета example в статистику покрытия.Обязательно используйте полную версию названия вашего пакета.т.е. github.com/user/example

...