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

158

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

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

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

HardPass
источник

Ответы:

310

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

$ go test ./...

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

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

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

$ go test foo/...

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

$ go test foo...

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

$ go test ...
zzzz
источник
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.

user7610
источник
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%
Muthukumar Selvaraj
источник