Como `testar 'todos os testes do meu projeto?

141

O go testcomando abrange *_test.goarquivos em apenas um diretório.

Eu quero go testtodo o projeto, o que significa que o teste deve abranger todos os *_test.goarquivos no diretório ./e cada dir árvore chindren sob a dir ./.

Qual é o comando para fazer isso?

hardPass
fonte

Respostas:

278

Isso deve executar todos os testes no diretório atual e todos os seus subdiretórios:

$ go test ./...

Isso deve executar todos os testes para determinados diretórios específicos:

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

Isso deve executar todos os testes com o caminho de importação prefixado com foo/:

$ go test foo/...

Isso deve executar todos os caminhos de importação de testes prefixados com foo:

$ go test foo...

Isso deve executar todos os testes em seu $ GOPATH:

$ go test ...
zzzz
fonte
4
FYI em zsh, o nu ...no último exemplo deve ser precedido, IEgo test \...
Gabe Kopley
Quando eu estou tentando executar todos os testes em subdir estou recebendogo: warning: "subdir/..." matched no packages
Ivan Aracki
@zzzz como executar testes para pastas específicas? dizer "vá testar foo ... bar ...?"
Omurbek Kadyrbekov 6/04
go test ./...é realmente um ótimo comando! Obrigado por ajudar :)
bumblebee
53

De Go 1.9 em diante , use

go test ./...

No Go 1.6 a 1.8, o ./...correspondente tambémvendor diretório . Para pular pacotes vendidos, você usaria

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

Fontes: 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 , comentário de @ nickgrim.

user7610
fonte
1
Por mais fácil que essa solução pareça, torna muito mais complicado para as pessoas no Windows (eu não sou apenas alguns dos meus companheiros de equipe) executá-lo. A beleza do Go executando nativamente em cada plataforma sem a necessidade de um Makefile é grande.
21916 Konrad Kleine
5
Vale ressaltar que a partir do Go 1.99 ./... não corresponde mais ao ./vendor/diretório, portanto você pode executar todos os seus testes e nenhum dos testes de fornecedores comgo test ./...
nickgrim 26/10/17
11

Estrutura de pastas

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

Comando go test Command

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

Relatório de cobertura para todo o projeto

ok      ProjectName/folderName1 10%
ok      ProjectName/folerName2  90%
ok      ProjectName/folerName2  85%
muthukumar selvaraj
fonte