Bagaimana untuk menguji pengendalian ralat di Golang?

WBOY
Lepaskan: 2024-06-03 17:00:00
asal
837 orang telah melayarinya

Kaedah biasa untuk menguji pengendalian ralat dalam Go termasuk: menggunakan error.Error() untuk menyemak sama ada mesej ralat adalah rentetan kosong; menggunakan testing.T.FatalError() dan testing.T.Errorf() untuk mengeluarkan mesej ralat dan tandakan ujian sebagai gagal Atau teruskan pelaksanaan; gunakan memerlukan fungsi penegasan, seperti require.NoError dan require.EqualError, untuk menghentikan ujian apabila gagal.

如何在 Golang 中测试错误处理?

Bagaimana untuk menguji pengendalian ralat di Golang?

Aspek penting dalam menulis kod teguh di Golang ialah mengendalikan ralat dengan betul. Menguji proses pengendalian ralat adalah penting untuk memastikan kod anda bertindak balas dengan betul apabila berlaku keadaan yang tidak dijangka.

Gunakan error.Error()error.Error()

最简单的方法是检查 error 类型变量的值是否为空字符串。这适用于不需要检查具体错误信息的情况。

func TestError(t *testing.T) {
    err := errors.New("Error occurred")

    if err != nil {
        t.Error(err)
    }
}
Salin selepas log masuk

使用 testing.T.FatalError()testing.T.Errorf()

FatalErrorErrorf 函数可以输出错误消息,并将测试标记为失败。FatalError 会立即停止测试,而 Errorf 会继续执行测试,但会打印错误消息。

func TestError(t *testing.T) {
    err := errors.New("Error occurred")

    t.Fatalf("Error occurred: %v\n", err)
    // t.Errorf("Error occurred: %v\n", err)
}
Salin selepas log masuk

使用 require 断言

require 是 Go 中的内置断言函数,在失败时会停止测试。它提供了多种方法来检查错误,包括 require.NoErrorrequire.EqualError

func TestError(t *testing.T) {
    err := errors.New("Error occurred")

    require.NoError(t, err)
    // require.EqualError(t, err, "Error occurred")
}
Salin selepas log masuk

实战案例

以下是一个测试 .Send()

Cara paling mudah ialah menyemak sama ada nilai pembolehubah jenis error ialah rentetan kosong. Ini berguna apabila menyemak mesej ralat tertentu tidak diperlukan.

func TestClient_Send(t *testing.T) {
    client := &Client{
        conn: mockConn{},
    }

    msg := &Message{
        Data: []byte("Hello"),
    }

    err := client.Send(msg)

    require.EqualError(t, err, "Error sending message: mock connection error")
}
Salin selepas log masuk
Gunakan testing.T.FatalError() dan testing.T.Errorf()

FatalError dan Errorf fungsi kod> kod> boleh mengeluarkan mesej ralat dan menandakan ujian sebagai gagal. <code>FatalError menghentikan ujian serta-merta, manakala Errorf meneruskan ujian tetapi mencetak mesej ralat. 🎜rrreee🎜Gunakan require untuk menegaskan 🎜🎜require ialah fungsi penegasan terbina dalam dalam Go yang menghentikan ujian apabila gagal. Ia menyediakan beberapa kaedah untuk menyemak ralat, termasuk require.NoError dan require.EqualError. 🎜rrreee🎜Kes praktikal🎜🎜Berikut ialah contoh praktikal pengendalian ralat dalam kaedah .Send(): 🎜rrreee🎜Conclusion🎜🎜Kaedah di atas menyediakan cara yang berkesan untuk menguji pengendalian ralat dalam Golang. Memilih strategi yang sesuai bergantung pada situasi khusus dan strategi ujian projek. 🎜

Atas ialah kandungan terperinci Bagaimana untuk menguji pengendalian ralat di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!