Estou executando um teste em Go com uma instrução para imprimir algo (ou seja, para depuração de testes), mas não está imprimindo nada.
func TestPrintSomething(t *testing.T) {
fmt.Println("Say hi")
}
Quando eu executo go test neste arquivo, esta é a saída:
ok command-line-arguments 0.004s
A única maneira de realmente imprimir, pelo que eu sei, é imprimi-lo via t.Error (), assim:
func TestPrintSomethingAgain(t *testing.T) {
t.Error("Say hi")
}
O que resulta em:
Say hi
--- FAIL: TestPrintSomethingAgain (0.00 seconds)
foo_test.go:35: Say hi
FAIL
FAIL command-line-arguments 0.003s
gom: exit status 1
Pesquisei no Google e olhei o manual, mas não encontrei nada.
Respostas:
Os structs
testing.T
etesting.B
ambos têm um método.Log
e.Logf
que parece ser o que você está procurando..Log
e.Logf
são semelhantes afmt.Print
efmt.Printf
respectivamente.Veja mais detalhes aqui: http://golang.org/pkg/testing/#pkg-index
fmt.X
imprimir declarações fazer testes no interior de trabalho, mas você vai encontrar a sua saída não é, provavelmente, na tela onde você espera encontrá-lo e, portanto, por que você deve usar os métodos de registro emtesting
.Se, como no seu caso, você quiser ver os logs dos testes que não estão falhando, você deve fornecer
go test
o-v
sinalizador (v para detalhamento). Mais detalhes sobre sinalizadores de teste podem ser encontrados aqui: https://golang.org/cmd/go/#hdr-Testing_flagsfonte
Por exemplo,
fonte
verbose
é o que eu estava procurando.Sim: era esse o caso até Go 1.13 (agosto de 2019) incluído.
E isso foi seguido na
golang.org
edição 24929Mas para (possivelmente) Go 1.14 (Q1 2020): CL 127120
A saída agora é:
Na verdade, está no Go 1.14, como Dave Cheney atesta em "
go test -v
fluxo de saída ":Vantagem, de acordo com Dave:
fonte
Para testar às vezes eu faço
Além disso, você pode imprimir em:
fonte
fmt.Println("hello")
.t.Log
et.Logf
imprima em seu teste, mas muitas vezes pode ser perdido, pois imprime na mesma linha do seu teste. O que eu faço é registrá-los de uma forma que os destaque, ou seja,que o imprime no terminal como,
fonte
O
*_test.go
arquivo é uma fonte Go como os outros, você pode inicializar um novo logger toda vez se precisar despejar estruturas de dados complexas, aqui um exemplo:Então, todas as vezes, em todos os testes:
fonte