Ich führe in Go einen Test mit einer Anweisung aus, um etwas zu drucken (dh zum Debuggen von Tests), aber es wird nichts gedruckt.
func TestPrintSomething(t *testing.T) {
fmt.Println("Say hi")
}
Wenn ich go test für diese Datei ausführe, ist dies die Ausgabe:
ok command-line-arguments 0.004s
Die einzige Möglichkeit, es wirklich zum Drucken zu bringen, besteht meines Wissens darin, es über t.Error () zu drucken, wie folgt:
func TestPrintSomethingAgain(t *testing.T) {
t.Error("Say hi")
}
Welches gibt dies aus:
Say hi
--- FAIL: TestPrintSomethingAgain (0.00 seconds)
foo_test.go:35: Say hi
FAIL
FAIL command-line-arguments 0.003s
gom: exit status 1
Ich habe gegoogelt und das Handbuch durchgesehen, aber nichts gefunden.
Antworten:
Die Strukturen
testing.T
undtesting.B
beide haben eine.Log
und.Logf
-Methode, die genau das klingt, wonach Sie suchen..Log
und.Logf
sind ähnlichfmt.Print
undfmt.Printf
sind.Weitere Details finden Sie hier: http://golang.org/pkg/testing/#pkg-index
fmt.X
print - Anweisungen tun innen Tests Arbeit, aber Sie werden ihre Ausgabe ist wahrscheinlich nicht auf dem Bildschirm , wo Sie erwarten , dass es zu finden und damit , warum Sie die Logging - Methoden in verwenden solltentesting
.Wenn Sie wie in Ihrem Fall die Protokolle für Tests anzeigen möchten, die nicht fehlschlagen, müssen Sie
go test
das-v
Flag (v für Ausführlichkeit) angeben. Weitere Details zum Testen von Flags finden Sie hier: https://golang.org/cmd/go/#hdr-Testing_flagsquelle
Beispielsweise,
quelle
verbose
ist das, wonach ich gesucht habe.Ja, das war bis Go 1.13 (August 2019) der Fall.
Und das folgte in
golang.org
Ausgabe 24929Aber für (möglicherweise) Go 1.14 (Q1 2020): CL 127120
Die Ausgabe ist jetzt:
Es ist in der Tat in Go 1.14, wie Dave Cheney in "
go test -v
Streaming Output " bestätigt:Vorteil laut Dave:
quelle
Zum Testen mache ich manchmal
Sie können auch drucken auf:
quelle
fmt.Println("hello")
.t.Log
undt.Logf
drucken Sie in Ihrem Test aus, können aber oft übersehen werden, da er in derselben Zeile wie Ihr Test gedruckt wird. Was ich tue, ist, sie auf eine Weise zu protokollieren, die sie hervorhebt, dhdas druckt es auf dem Terminal als,
quelle
Die
*_test.go
Datei ist wie die anderen eine Go-Quelle. Sie können jedes Mal einen neuen Logger initialisieren, wenn Sie eine komplexe Datenstruktur sichern müssen. Hier ein Beispiel:Dann jedes Mal in jedem Test:
quelle