Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menulis ujian unit komprehensif untuk fungsi Go

Cara menulis ujian unit komprehensif untuk fungsi Go

PHPz
PHPzasal
2024-05-02 13:27:02695semak imbas

Menulis ujian unit dalam Go membantu memastikan kualiti dan kebolehpercayaan kod. Ujian unit termasuk langkah-langkah seperti mengimport kebergantungan, menyediakan objek, menentukan input dan output, memanggil fungsi, dan menegaskan output. Dengan menggunakan fungsi assert dalam pakej ujian, anda boleh membandingkan output sebenar dengan output yang dijangkakan. Gunakan arahan go test untuk menjalankan ujian dan pastikan semua ujian lulus untuk memastikan ketepatan kod Go anda.

如何为 Go 函数编写全面的单元测试

Tulis ujian unit komprehensif untuk fungsi Go

Menulis ujian unit dalam Go adalah penting untuk memastikan kualiti dan kebolehpercayaan kod. Ujian unit membolehkan anda mengasingkan dan menguji kelakuan satu fungsi atau kaedah untuk memastikan ia berfungsi seperti yang diharapkan.

Komposisi ujian unit

Ujian unit biasa mengandungi bahagian berikut:

  • Import kebergantungan yang diperlukan: import pakej atau perpustakaan yang diperlukan.
  • Sediakan objek ujian: Buat contoh fungsi atau objek yang akan diuji.
  • Tentukan input dan output yang dijangkakan: Tetapkan parameter input dan hasil output yang dijangkakan untuk fungsi ujian.
  • Fungsi ujian panggilan: Cetuskan ujian dengan memanggil fungsi dan menghantar parameter input.
  • Output penegasan: Gunakan perpustakaan penegasan untuk membandingkan output sebenar dan output yang dijangkakan untuk mengesahkan sama ada ujian itu lulus.

Kes praktikal

Mari kita buat fungsi Sum dan tulis ujian unit untuknya: Sum 函数并为其编写一个单元测试:

package main

import (
    "testing"
)

// Sum 返回两个数字之和
func Sum(a, b int) int {
    return a + b
}

func TestSum(t *testing.T) {
    // 设置测试表
    tests := []struct {
        a, b int
        want int
    }{
        {1, 2, 3},
        {-1, 5, 4},
        {0, -5, -5},
    }

    // 遍历测试表,对每个测试用例运行测试
    for _, tt := range tests {
        got := Sum(tt.a, tt.b)
        if got != tt.want {
            t.Errorf("Sum(%d, %d) = %d, want %d", tt.a, tt.b, got, tt.want)
        }
    }
}

断言库

Go 提供了[testing](https://golang.org/pkg/testing/) 包,其中包含各种断言函数,可用于比较实际输出和预期输出。一些常用的断言函数包括:

  • t.Fatal(): 如果断言失败,则终止测试。
  • t.Error(): 报告一个失败,允许测试继续。
  • t.Errorf(): 报告一个带有格式化错误消息的失败。
  • t.Equal(): 比较两个值是否相等。
  • t.NotEqual(): 比较两个值是否不相等。

运行测试

使用 go test

go test

Pustaka assertion

Go menyediakan [ujian] (https: //golang.org/pkg/testing/) pakej, yang mengandungi pelbagai fungsi penegasan yang boleh digunakan untuk membandingkan output sebenar dengan output yang dijangkakan. Beberapa fungsi penegasan yang biasa digunakan termasuk:

🎜t.Fatal(): Menamatkan ujian jika penegasan gagal. 🎜🎜t.Error(): Laporkan kegagalan, membenarkan ujian diteruskan. 🎜🎜t.Errorf(): Laporkan kegagalan dengan mesej ralat terformat. 🎜🎜t.Equal(): Membandingkan sama ada dua nilai adalah sama. 🎜🎜t.NotEqual(): Membandingkan sama ada dua nilai tidak sama. 🎜🎜🎜Jalankan ujian🎜🎜Jalankan ujian unit menggunakan perintah go test: 🎜
PASS
ok      main    [no tests found]
🎜Jika semua ujian lulus, anda akan melihat output berikut: 🎜rrreee🎜Dengan menulis ujian unit komprehensif, anda boleh memastikan ketepatan dan kebolehpercayaan kod Go, dengan itu meningkatkan kualiti dan kebolehselenggaraan aplikasi anda. 🎜

Atas ialah kandungan terperinci Cara menulis ujian unit komprehensif untuk fungsi Go. 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