Как пройти тестирование всех тестов в моем проекте?


158

Команда go testохватывает *_test.goфайлы только в одном каталоге.

Мне нужен go testвесь проект, а это значит, что тест должен охватывать все *_test.goфайлы в каталоге ./и все дочерние деревья в каталоге ./.

Какая команда для этого?

Ответы:


310

Это должно запустить все тесты в текущем каталоге и во всех его подкаталогах:

$ go test ./...

Это должно запустить все тесты для заданных конкретных каталогов:

$ go test ./tests/... ./unit-tests/... ./my-packages/...

Это должно запустить все тесты с префиксом пути импорта foo/:

$ go test foo/...

Это должно запустить все пути импорта тестов с префиксом foo:

$ go test foo...

Это должно запустить все тесты в вашем $ GOPATH:

$ go test ...

4
FYI in zsh, голые ...в последнем примере должны быть go test \...
убраны

Когда я пытаюсь запустить все тесты в подкаталоге, я получаюgo: warning: "subdir/..." matched no packages
Иван Араки

@zzzz как запускать тесты для определенных папок? скажи «иди,
попробуй фу

go test ./...действительно отличная команда !. Спасибо за помощь :)
bumblebee

56

Начиная с Go 1.9 и далее используйте

go test ./...

В Go с 1.6 по 1.8 каталог./... также соответствовал . Чтобы пропустить поставленные пакеты, вы должны использоватьvendor

go test $(go list ./... | grep -v /vendor/)

Источники: https://github.com/golang/go/issues/11659 , https://github.com/golang/go/issues/14417 , https://github.com/go-lang-plugin-org/ go-lang-idea-plugin / issues / 2366 , комментарий @ nickgrim.


1
Как бы просто это решение не выглядело, оно значительно усложняет пользователям Windows (я нет, но некоторые из моих товарищей по команде) его запускают. Прекрасно то, что Go запускается на каждой платформе без необходимости в Makefile.
Конрад Кляйне

5
Стоит отметить, что Go 1.9 ./... больше не соответствует ./vendor/каталогу, поэтому вы можете запускать все свои тесты и ни один из тестов поставщика с помощьюgo test ./...
nickgrim

11

Структура папки

ProjectName/folderName1/file_test.go
ProjectName/folderName2/file1_test.go
ProjectName/folderName3/file2_test.go

команда go test Команда

   ProjectName$ go test -v ./...
    ProjectName$ go test  ./...
    ProjectName$ go test -cover ./...

Отчет об охвате для всего проекта

ok      ProjectName/folderName1 10%
ok      ProjectName/folerName2  90%
ok      ProjectName/folerName2  85%
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.