Uruchamiam test w Go z instrukcją, aby coś wydrukować (np. Do debugowania testów), ale to nic nie drukuje.
func TestPrintSomething(t *testing.T) {
fmt.Println("Say hi")
}
Kiedy uruchamiam test go na tym pliku, jest to wynik:
ok command-line-arguments 0.004s
Jedynym sposobem, aby naprawdę wydrukować to, o ile wiem, jest wydrukowanie go za pomocą t.Error (), na przykład:
func TestPrintSomethingAgain(t *testing.T) {
t.Error("Say hi")
}
Który daje to:
Say hi
--- FAIL: TestPrintSomethingAgain (0.00 seconds)
foo_test.go:35: Say hi
FAIL
FAIL command-line-arguments 0.003s
gom: exit status 1
Wyszukałem w Google i przejrzałem instrukcję, ale nic nie znalazłem.
Odpowiedzi:
Struktury
testing.T
itesting.B
oba mają metodę.Log
i.Logf
metodę, które brzmią, aby być tym, czego szukasz..Log
i.Logf
są podobne dofmt.Print
ifmt.Printf
odpowiednio.Zobacz więcej szczegółów tutaj: http://golang.org/pkg/testing/#pkg-index
fmt.X
wydrukować sprawozdanie zrobić pracę wewnątrz testów, ale znajdziesz ich produkcja nie jest chyba na ekranie, gdzie można oczekiwać, aby go znaleźć, a co za tym idzie, dla których warto korzystać z metod rejestrowania siętesting
.Jeśli, jak w twoim przypadku, chcesz zobaczyć logi do badań, które nie są upadających, trzeba dostarczyć
go test
do-v
flag (v) do gadatliwości. Więcej szczegółów na temat flag testowych można znaleźć tutaj: https://golang.org/cmd/go/#hdr-Testing_flagsźródło
Na przykład,
źródło
verbose
jest tym, czego szukałem.Tak: tak było do wersji Go 1.13 (sierpień 2019) włącznie.
I tak było w
golang.org
numerze 24929Ale dla (prawdopodobnie) Go 1.14 (Q1 2020): CL 127120
Wynik to teraz:
Rzeczywiście tak jest w Go 1.14, jak potwierdza Dave Cheney w „
go test -v
transmisji strumieniowej ”:Zaleta, według Dave'a:
źródło
Czasami do testów
Możesz także drukować na:
źródło
fmt.Println("hello")
.t.Log
it.Logf
wydrukuj w swoim teście, ale często można go przeoczyć, ponieważ drukuje w tym samym wierszu co test. Loguję je w sposób, który je wyróżnia, tjktóry drukuje go na terminalu jako,
źródło
*_test.go
Plik jest źródłem Go jak inni, można zainicjować nową rejestratora za każdym razem, gdy trzeba zrzucić złożoną strukturę danych, tutaj przykład:Następnie za każdym razem w każdym teście:
źródło