Estoy ejecutando una prueba en Go con una declaración para imprimir algo (es decir, para depurar pruebas) pero no imprime nada.
func TestPrintSomething(t *testing.T) {
fmt.Println("Say hi")
}
Cuando ejecuto ir a probar en este archivo, este es el resultado:
ok command-line-arguments 0.004s
La única forma de hacer que se imprima realmente, hasta donde yo sé, es imprimirlo a través de t.Error (), así:
func TestPrintSomethingAgain(t *testing.T) {
t.Error("Say hi")
}
Que produce esto:
Say hi
--- FAIL: TestPrintSomethingAgain (0.00 seconds)
foo_test.go:35: Say hi
FAIL
FAIL command-line-arguments 0.003s
gom: exit status 1
Busqué en Google y revisé el manual, pero no encontré nada.
Respuestas:
Las estructuras
testing.T
ytesting.B
ambos tienen un método.Log
y.Logf
que suena a ser lo que estás buscando..Log
y.Logf
son similares afmt.Print
yfmt.Printf
respectivamente.Vea más detalles aquí: http://golang.org/pkg/testing/#pkg-index
fmt.X
Declaraciones de impresión hacen pruebas en el interior de trabajo, pero se puede encontrar su salida no es, probablemente, en la pantalla donde se espera encontrar y, por lo tanto, por qué debería utilizar los métodos de registro entesting
.Si, como en su caso, desea ver los registros de las pruebas que no fallan, debe proporcionar
go test
la-v
marca (v para verbosidad). Puede encontrar más detalles sobre las banderas de prueba aquí: https://golang.org/cmd/go/#hdr-Testing_flagsfuente
Por ejemplo,
fuente
verbose
es lo que estaba buscando.Sí: ese fue el caso hasta Go 1.13 (agosto de 2019) incluido.
Y eso fue seguido en el
golang.org
número 24929.Pero para (posiblemente) Go 1.14 (Q1 2020): CL 127120
La salida ahora es:
De hecho, está en Go 1.14, como lo atestigua Dave Cheney en "
go test -v
salida de transmisión ":Ventaja, según Dave:
fuente
Para probar a veces lo hago
Además, puede imprimir en:
fuente
fmt.Println("hello")
.t.Log
et.Logf
imprime en su prueba, pero a menudo se puede perder ya que se imprime en la misma línea que su prueba. Lo que hago es registrarlos de manera que se destaquen, es decirque lo imprime en la terminal como,
fuente
El
*_test.go
archivo es una fuente Go como los demás, puede inicializar un nuevo registrador cada vez que necesite volcar una estructura de datos compleja, aquí un ejemplo:Entonces, cada vez, en cada prueba:
fuente