Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Menguji Panik dengan Berkesan dalam Ujian Unit Go?

Bagaimanakah Saya Boleh Menguji Panik dengan Berkesan dalam Ujian Unit Go?

Barbara Streisand
Lepaskan: 2024-12-02 12:30:15
asal
764 orang telah melayarinya

How Can I Effectively Test for Panics in Go Unit Tests?

Menguji Panik dalam Go: Panduan Praktikal

Apabila menulis ujian unit dalam Go, selalunya perlu untuk mengesahkan bahawa laluan kod tertentu mencetuskan panik. Walaupun Go menyediakan mekanisme yang dipanggil pulih untuk mengendalikan panik, ia tidak menawarkan sokongan langsung untuk menentukan cara melangkau atau melaksanakan kod secara khusus sekiranya berlaku panik.

Untuk mengatasi had ini, kami boleh menggunakan kehalusan ujian itu tidak mentakrifkan konsep kejayaan, tetapi hanya kegagalan. Dengan mengambil kesempatan daripada ini, kami boleh menstrukturkan ujian kami seperti berikut:

func TestPanic(t *testing.T) {
    defer func() {
        if r := recover(); r == nil {
            t.Errorf("The code did not panic")
        }
    }()

    // The following is the code under test
    OtherFunctionThatPanics()
}
Salin selepas log masuk

Dalam contoh ini, jika OtherFunctionThatPanics tidak panik, fungsi pulih akan kembali sifar, dan ujian akan gagal disebabkan panggilan kepada t.Errorf. Jika panik berlaku, pulih akan menangkapnya dan ujian akan lulus.

Sebagai alternatif, kita boleh mencipta fungsi pembantu untuk mengabstrak logik penyemakan panik:

func assertPanic(t *testing.T, f func()) {
    defer func() {
        if r := recover(); r == nil {
            t.Errorf("The code did not panic")
        }
    }()
    f()
}

func TestPanic(t *testing.T) {
    assertPanic(t, OtherFunctionThatPanics)
}
Salin selepas log masuk

Ini pendekatan menyediakan cara yang ringkas dan boleh diguna semula untuk mengendalikan ujian panik dalam Go.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menguji Panik dengan Berkesan dalam Ujian Unit Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan