Perkongsian kes amalan pembangunan dipacu ujian di Golang
Pengenalan:
Pembangunan Dipacu Ujian (TDD) ialah metodologi pembangunan perisian . Dalam bahasa pengaturcaraan peringkat tinggi seperti Golang yang menekankan kualiti dan prestasi kod, pembangunan dipacu ujian ialah kaedah pembangunan yang sangat berkesan. Artikel ini akan berkongsi beberapa kes praktikal pembangunan dipacu ujian di Golang dan melampirkan contoh kod yang sepadan.
1. Pengujian Unit
Ujian unit ialah bahagian paling asas dalam pembangunan dipacu ujian Ia memastikan ketepatan setiap fungsi kecil dengan menulis kes ujian untuk satu fungsi atau kaedah. Berikut ialah kod sampel untuk ujian unit Golang mudah:
package main import ( "testing" ) // 要测试的函数 func Add(a, b int) int { return a + b } func TestAdd(t *testing.T) { result := Add(3, 4) if result != 7 { t.Errorf("Add(3, 4) = %d; want 7", result) } }
Dalam contoh ini, kami mentakrifkan fungsi Tambah, parameter ialah dua integer dan nilai pulangan ialah jumlahnya. Seterusnya, kami menulis fungsi TestAdd sebagai kes ujian dan menggunakan fungsi t.Errorf untuk menentukan sama ada keputusan fungsi Tambah adalah konsisten dengan jangkaan. Dengan menjalankan arahan go test
kita boleh menjalankan ujian unit ini secara langsung.
2. Ujian integrasi
Ujian integrasi ialah satu lagi pautan penting dalam pembangunan dipacu ujian Ia digunakan untuk menguji sama ada interaksi antara modul yang berbeza adalah betul. Berikut ialah kod sampel untuk ujian penyepaduan Golang mudah:
package main import ( "net/http" "net/http/httptest" "testing" ) func TestHandler(t *testing.T) { // 创建一个测试用的HTTP请求 req, err := http.NewRequest("GET", "/hello", nil) if err != nil { t.Fatal(err) } // 创建一个HTTP测试服务器 rr := httptest.NewRecorder() handler := http.HandlerFunc(HelloHandler) // 使用HTTP测试服务器处理请求 handler.ServeHTTP(rr, req) // 检查HTTP响应的状态码 if status := rr.Code; status != http.StatusOK { t.Errorf("handler returned wrong status code: got %v want %v", status, http.StatusOK) } // 检查HTTP响应的正文内容 expected := "Hello, World!" if rr.Body.String() != expected { t.Errorf("handler returned unexpected body: got %v want %v", rr.Body.String(), expected) } } func HelloHandler(w http.ResponseWriter, r *http.Request) { w.Write([]byte("Hello, World!")) }
Dalam contoh ini, kami menulis fungsi pemprosesan HTTP bernama HelloHandler untuk mengendalikan permintaan GET dengan URL "/hello" dan mengembalikan "Hello, World!". Seterusnya, kami menulis fungsi ujian integrasi yang dipanggil TestHandler. Dalam fungsi ini, kami menggunakan fungsi NewRecorder dan kaedah ServeHTTP yang disediakan oleh pakej httptest untuk mensimulasikan pelayan HTTP dan memproses permintaan. Kami boleh mengesahkan ketepatan fungsi pemprosesan HTTP dengan menyemak kod status yang dikembalikan dan kandungan badan respons.
3. Pembangunan Didorong Tingkah Laku
Pembangunan Didorong Tingkah Laku (BDD) ialah kaedah pembangunan yang menggabungkan pembangunan dipacu ujian dengan reka bentuk dipacu domain Ia juga telah digunakan secara meluas di Golang. Berikut ialah kod sampel untuk ujian BDD Golang yang mudah:
package main import ( "testing" "github.com/stretchr/testify/assert" ) func TestFizzBuzz(t *testing.T) { assert := assert.New(t) input := 15 expect := "FizzBuzz" result := fizzBuzz(input) assert.Equalf(expect, result, "fizzBuzz(%d) = %s; want %s", input, result, expect) } func fizzBuzz(n int) string { if n%3 == 0 && n%5 == 0 { return "FizzBuzz" } else if n%3 == 0 { return "Fizz" } else if n%5 == 0 { return "Buzz" } else { return strconv.Itoa(n) } }
Dalam contoh ini, kami menulis fungsi yang dipanggil fizzBuzz untuk mengembalikan rentetan yang sepadan berdasarkan integer n. Kami menulis kes ujian gaya BDD yang jelas dan boleh dibaca dengan menggunakan kaedah assert.New dan assert.Equalf yang disediakan oleh perpustakaan github.com/stretchr/testify/assert. Pendekatan ini lebih baik membolehkan ahli pasukan memahami keperluan dan logik kod.
Kesimpulan:
Pembangunan dipacu ujian ialah kaedah pembangunan perisian yang sangat berkesan, yang boleh memastikan kualiti kod dan meningkatkan kecekapan pembangunan, dan juga digunakan secara meluas di Golang. Melalui pengenalan dan contoh kod artikel ini, saya percaya pembaca boleh menguasai prinsip asas dan kaedah praktikal pembangunan dipacu ujian di Golang. Saya berharap pembaca dapat mengaplikasikan pembangunan dipacu ujian ke dalam amalan dalam kerja pembangunan masa hadapan, dengan itu meningkatkan kebolehpercayaan dan kebolehselenggaraan kod tersebut.
Atas ialah kandungan terperinci Berkongsi kes praktikal pembangunan dipacu ujian di Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!