Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mencetak Maklumat Nyahpepijat dalam Go Tests Menggunakan Pakej `testing`?

Bagaimana untuk Mencetak Maklumat Nyahpepijat dalam Go Tests Menggunakan Pakej `testing`?

Barbara Streisand
Barbara Streisandasal
2024-12-06 07:03:11687semak imbas

How to Print Debug Information in Go Tests Using the `testing` Package?

Bagaimana untuk mencetak maklumat nyahpepijat dalam ujian Go menggunakan pakej "ujian"?

Apabila menulis ujian Go, kadangkala berguna untuk cetak maklumat nyahpepijat untuk membantu memahami gelagat kod anda. Walau bagaimanapun, mencetak kepada output standard menggunakan fmt.Println() tidak berfungsi dalam ujian. Ini kerana output ujian ditimbal dan hanya dicetak jika ujian gagal.

Pakej "ujian" menyediakan dua kaedah alternatif untuk mencetak maklumat nyahpepijat:

  • t.Log()
  • t.Logf()

Kaedah ini serupa dengan fmt.Print() dan fmt.Printf(), tetapi mereka menulis outputnya terus ke log ujian. Untuk mendayakan pengelogan, anda perlu menentukan bendera -v (verbose) semasa menjalankan ujian go:

go test -v

Ini akan mencetak semua mesej log ke output standard, termasuk yang daripada ujian yang berjaya.

Berikut ialah contoh cara menggunakan t.Log() dan t.Logf():

func TestPrintSomething(t *testing.T) {
    t.Log("Say hi")
    t.Logf("The value of myVar is %d", myVar)
}

Apabila menjalankan ujian ini dengan -v, output berikut akan dicetak:

=== RUN   TestPrintSomething
Say hi
The value of myVar is 1234
--- PASS: TestPrintSomething (0.00s)

Anda juga boleh menggunakan t.Error() untuk mencetak mesej ralat. Ini akan menyebabkan ujian gagal.

Berikut ialah contoh cara menggunakan t.Error():

func TestPrintSomething(t *testing.T) {
    if myVar != 1234 {
        t.Errorf("The value of myVar is %d, but it should be 1234", myVar)
    }
}

Apabila menjalankan ujian ini dengan -v, output berikut akan dicetak:

=== RUN   TestPrintSomething
The value of myVar is 4567, but it should be 1234
--- FAIL: TestPrintSomething (0.00s)

Pakej ujian juga menyediakan jenis ujian.B untuk ujian penanda aras. Jenis testing.B mempunyai kaedah Log() yang berfungsi seperti t.Log().

Berikut ialah contoh cara menggunakan B.Log():

func BenchmarkSomething(b *testing.B) {
    for i := 0; i < b.N; i++ {
        // Do something
        b.Log("The value of i is", i)
    }
}

Bila menjalankan penanda aras ini dengan go test -v, output berikut akan dicetak:

=== RUN   BenchmarkSomething
The value of i is 0
The value of i is 1
The value of i is 2
The value of i is 3
...
The value of i is 1000
--- BENCH: BenchmarkSomething  1000000000000000000/s

Atas ialah kandungan terperinci Bagaimana untuk Mencetak Maklumat Nyahpepijat dalam Go Tests Menggunakan Pakej `testing`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn