Existem duas maneiras. O mais fácil é usar o -run
sinalizador e fornecer um padrão que corresponda aos nomes dos testes que você deseja executar.
Exemplo:
$ go test -run NameOfTest
Veja os documentos para mais informações.
A outra maneira é nomear o arquivo específico, contendo os testes que você deseja executar:
$ go test foo_test.go
Mas há um problema. Isso funciona bem se:
foo.go
está em package foo
.
foo_test.go
está dentro package foo_test
e importa 'foo'.
Se foo_test.go
e foo.go
for o mesmo pacote (um caso comum), você deverá nomear todos os outros arquivos necessários para construir foo_test
. Neste exemplo, seria:
$ go test foo_test.go foo.go
Eu recomendo usar o -run
padrão. Ou, onde / quando possível, sempre execute todos os testes de pacotes.
-run
favor? Não consigo encontrar nenhuma referência manual nessa.go help testflag
go test utils.go utils_test.go
a saída éok command-line-arguments 0.002s
. Não executa o teste. O motivo pelo qual desejo usar esse modo de teste é porque o pacote contém muitos arquivos e eles ainda não são compilados, exceto os utilitários. Então, eu gostaria de finalizar os utils antes do workinqg em outros arquivos. Como eu posso fazer isso ?-v
sinalizador (detalhado). De os documentos-v Verbose output: log all tests as they are run. Also print all text from Log and Logf calls even if the test succeeds.
A resposta do @ zzzz é quase completa, mas para evitar que outras pessoas precisem procurar na documentação referenciada , você pode executar um único teste em um pacote da seguinte maneira:
Observe que você deseja passar o nome do teste, não o nome do arquivo em que o teste existe.
O
-run
sinalizador realmente aceita uma regex para que você possa limitar a execução do teste a uma classe de testes. Dos documentos:fonte
Ao executar um único teste, costumo fazer:
-count 1
também garante que o teste seja executado sempre, em vez de ser armazenado em cache. Útil quando você está testando contra condições de corrida e tem um teste que falha apenas algumas vezes. Nas versões do Go que não usam módulos, o mesmo pode ser alcançado pela configuração,GOCACHE=off
mas isso interage mal com os módulos do Go.fonte
no plugin intelliJ IDEA go-lang (e eu assumo no jetbrains Gogland), você pode simplesmente definir o tipo de teste para arquivar em execução> editar configurações
fonte
fonte
Impede o armazenamento em cache dos resultados do teste.
fonte
go
arquivo de teste nesse pacote-run TestCaseFunc
fonte