Quero criar um pacote em Go com testes e exemplos do pacote como subdiretórios para manter o espaço de trabalho mais limpo. Isso é possível e se sim como?
Toda a documentação sempre coloca o código de teste no mesmo lugar que o outro código, isso é melhor de alguma forma ou apenas por convenção?
go test ./...
irá executar testes na pasta atual e em todas as subpastas. Veja minha resposta abaixoRespostas:
Observe que você pode executar
go test
"recursivamente": você precisa listar todos os pacotes que deseja testar .Se você estiver na pasta raiz do seu projeto Go, digite:
A
./...
notação ' ' é descrita na seção " Descrição das listas de pacotes " do " comandogo
":Se você mantiver seus
_test.go
arquivos em uma subpasta, ogo test ./...
comando ' ' poderá pegá-los.Mas:
Dito isso, eu ainda prefiro manter o
_test.go
arquivo ao lado do arquivo fonte principal: é mais fácil de encontrar.fonte
Coloque seus testes junto com seu código no mesmo diretório em um arquivo chamado,
file_test.go
onde "arquivo" é o nome do arquivo de código-fonte que você está testando. Isso é uma convenção e descobri que é o melhor em minha própria experiência.Se a
go test
ferramenta não for totalmente automatizada para você, você pode olhar para GoConvey , que tem uma IU da web que irá atualizar e executar automaticamente testes Go tradicionais, bem como testes GoConvey (que são baseados no comportamento e são mais autodocumentados do que os testes Go tradicionais).fonte
go test
também pode funcionar para subpastas. Veja minha resposta abaixoEDITADO
Baseado na resposta de VonC,
Esta resposta é válida em
go1.11
. Ainda não testado emgo
versões superiores .Para aqueles de vocês que gostam de manter seus testes em uma subpasta, digamos
test
, em seguida, executandotentará executar testes em todas as pastas, mesmo aquelas que não contêm nenhum teste, tendo, portanto, um
?
no relatório subsequente para pastas que não sejam de teste.Corrida
em vez disso, terá como alvo apenas suas
test
pastas, tendo assim um relatório limpo focado apenas em suas pastas de teste.CUIDADO
Esteja ciente de que o uso de subpastas de teste impedirá o cálculo do relatório de cobertura. A filosofia do go é deixar os arquivos de teste nas pastas do pacote.
fonte
go test ./.../test
retornago: warning: "./.../test" matched no packages
// não tem como alvo apenas as pastas de teste. go versão go1.13 darwin / amd64Eu normalmente não faço testes, mas você pode agrupar seu arquivo em diretórios e usar importação como
import "./models"
se é um nível fora,import "../models
se é um nível fora e um nível dentroPor exemplo, para:
./models/todo.go
./test/todo_test.go
para teste
todo.go
a partirtodo_test.go
, sua importação natodo_test.go
seráimport "../models"
fonte