


Bagaimana untuk melaksanakan ujian unit menggunakan rangka kerja golang?
Bahasa Go menyediakan rangka kerja ujian unit yang berkuasa yang boleh digunakan untuk mengesahkan ketepatan kod. Apabila menyediakan ujian unit, cipta fungsi ujian unit yang bermula dengan Ujian dan gunakan fungsi penegasan (seperti Sama, Benar, dll.) untuk mengesahkan kelakuan yang dijangkakan. Ujian unit boleh dilaksanakan dengan mudah dengan mencipta fail _test.go dan termasuk fungsi ujian unit. Ujian unit ini boleh digunakan untuk menguji kefungsian kompleks seperti fungsi mudah, titik akhir HTTP atau pertanyaan pangkalan data untuk memastikan kod tersebut menghasilkan output yang betul di bawah pelbagai input.
Ujian Unit dengan Go: Kes Praktikal
Bahasa Go menyediakan rangka kerja ujian unit yang berkuasa yang membolehkan pembangun menguji ketepatan kod mereka dengan mudah. Dalam artikel ini, kita akan melihat cara melakukan ujian unit dengan Go dan menerangkan cara ia berfungsi dengan contoh praktikal.
Sediakan ujian unit
Untuk menyediakan ujian unit, buat fail baharu yang dipanggil _test.go
dalam projek anda. Fail ini akan mengandungi fungsi ujian unit anda dan ia harus bermula dengan _test.go
的新文件。这个文件将包含你的单元测试函数,它们应该以 Test
开头:
import "testing" func TestSomething(t *testing.T) { // 你的测试代码 }
断言
单元测试通过使用断言来验证代码的预期行为。Go 提供了多种断言函数:
Equal(a, b)
:断言a
和b
相等NotEqual(a, b)
:断言a
和b
不相等True(x)
:断言x
为真False(x)
:断言x
为假
示例:计算函数
让我们创建一个简单的 Add
函数并为其编写单元测试:
func Add(a, b int) int { return a + b }
import "testing" func TestAdd(t *testing.T) { tests := []struct { a int b int expected int }{ {1, 2, 3}, {3, 4, 7}, {-1, 10, 9}, } for _, tt := range tests { result := Add(tt.a, tt.b) if result != tt.expected { t.Errorf("Add(%d, %d) = %d, expected %d", tt.a, tt.b, result, tt.expected) } } }
实战案例
上述测试确保了 Add
函数在各种输入下产生正确的输出。单元测试还可以用于测试更复杂的功能,例如 HTTP 端点或数据库查询。
例如,我们可以为一个简单的 REST API 编写一个单元测试来验证其 GET
import "testing" import "net/http" import "net/http/httptest" import "encoding/json" type Response struct { Name string `json:"name"` Address string `json:"address"` } func TestGetUser(t *testing.T) { req, err := http.NewRequest("GET", "/user/1", nil) if err != nil { t.Fatal(err) } rr := httptest.NewRecorder() handler := http.HandlerFunc(GetUser) handler.ServeHTTP(rr, req) var response Response err = json.NewDecoder(rr.Body).Decode(&response) if err != nil { t.Fatal(err) } if response.Name != "John Doe" || response.Address != "123 Main St" { t.Errorf("Unexpected response: %v", response) } }
-
Equal(a, b)
: Tegaskan bahawaa
danb
adalah sama li> -
NotEqual(a, b)
: Tegaskan bahawaa
danb
adalah tidak sama -
False(x)
: Tegaskan bahawax
adalah palsu
Benar (x)
: Tegaskan bahawa x
adalah benarTambah
yang mudah dan tulis ujian unit untuknya: 🎜rrreeerrreee🎜🎜Praktikal case🎜🎜🎜Ujian di atas memastikan fungsi Add
kini menghasilkan output yang betul untuk pelbagai input. Ujian unit juga boleh digunakan untuk menguji fungsi yang lebih kompleks, seperti titik akhir HTTP atau pertanyaan pangkalan data. 🎜🎜Sebagai contoh, kita boleh menulis ujian unit untuk REST API mudah untuk mengesahkan respons titik akhir GET
nya: 🎜rrreeeAtas ialah kandungan terperinci Bagaimana untuk melaksanakan ujian unit menggunakan rangka kerja golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Bagaimana untuk membaca dan menulis fail dengan selamat menggunakan Golang?

Bagaimana untuk mengkonfigurasi kolam sambungan untuk sambungan pangkalan data Golang?

Persamaan dan Perbezaan antara Golang dan C++

Seberapa curam keluk pembelajaran seni bina rangka kerja golang?

Perbandingan kebaikan dan keburukan rangka kerja golang

Apakah amalan terbaik untuk pengendalian ralat dalam rangka kerja Golang?

Bagaimana untuk menggunakan gomega untuk penegasan dalam ujian unit Golang?

arahan penggunaan dokumen rangka kerja golang
