Saya menjalankan tes di Go dengan pernyataan untuk mencetak sesuatu (yaitu untuk debugging tes) tetapi tidak mencetak apa pun.
func TestPrintSomething(t *testing.T) {
fmt.Println("Say hi")
}
Ketika saya menjalankan go test pada file ini, ini adalah outputnya:
ok command-line-arguments 0.004s
Satu-satunya cara untuk benar-benar mencetaknya, sejauh yang saya tahu, adalah dengan mencetaknya melalui t.Error (), seperti:
func TestPrintSomethingAgain(t *testing.T) {
t.Error("Say hi")
}
Yang menghasilkan ini:
Say hi
--- FAIL: TestPrintSomethingAgain (0.00 seconds)
foo_test.go:35: Say hi
FAIL
FAIL command-line-arguments 0.003s
gom: exit status 1
Saya telah mencari di Google dan melihat-lihat manual tetapi tidak menemukan apa pun.
Jawaban:
Structs
testing.T
dantesting.B
keduanya memiliki metode.Log
dan.Logf
yang terdengar seperti yang Anda cari..Log
dan.Logf
mirip denganfmt.Print
danfmt.Printf
masing - masing.Lihat detail selengkapnya di sini: http://golang.org/pkg/testing/#pkg-index
fmt.X
pernyataan cetak lakukan pekerjaan di dalam tes, tetapi Anda akan menemukan output mereka mungkin tidak pada layar di mana Anda berharap untuk menemukan itu dan, karenanya, mengapa Anda harus menggunakan metode logging ditesting
.Jika, seperti dalam kasus Anda, Anda ingin melihat log untuk tes yang tidak gagal, Anda harus menyediakan
go test
satu-v
bendera (v untuk bertele-tele). Detail selengkapnya tentang flag pengujian dapat ditemukan di sini: https://golang.org/cmd/go/#hdr-Testing_flagssumber
Sebagai contoh,
sumber
verbose
adalah apa yang saya cari.Ya: itulah yang terjadi hingga Go 1.13 (Agustus 2019) disertakan.
Dan itu diikuti dalam
golang.org
edisi 24929Tetapi untuk (mungkin) Go 1.14 (Q1 2020): CL 127120
Outputnya sekarang adalah:
Ini memang ada di Go 1.14, seperti yang dibuktikan oleh Dave Cheney dalam "
go test -v
output streaming ":Keuntungan, menurut Dave:
sumber
Untuk pengujian terkadang saya lakukan
Anda juga dapat mencetak ke:
sumber
fmt.Println("hello")
.t.Log
dant.Logf
mencetak dalam pengujian Anda, tetapi sering kali terlewatkan karena dicetak pada baris yang sama dengan pengujian Anda. Apa yang saya lakukan adalah membuat log dengan cara yang membuatnya menonjol, yaituyang mencetaknya ke terminal sebagai,
sumber
The
*_test.go
file sumber Go seperti yang lain, Anda dapat menginisialisasi logger baru setiap kali jika Anda perlu untuk membuang struktur data yang kompleks, di sini contoh:Kemudian, setiap kali, di setiap ujian:
sumber