Pengenalan kepada rangka kerja ujian Golang dan contoh kod
Pengenalan:
Dalam proses pembangunan perisian, ujian adalah bahagian yang penting. Sebagai bahasa pengaturcaraan yang cekap dan boleh dipercayai, rangka kerja ujian Golang juga patut diberi perhatian dan pembelajaran kami. Artikel ini akan memperkenalkan beberapa rangka kerja ujian Golang yang biasa digunakan dan menyediakan contoh kod yang sepadan untuk membantu pembaca memahami dengan lebih baik.
1. Rangka kerja ujian terbina dalam
Pustaka standard Golang dilengkapi dengan rangka kerja ujian, yang menyediakan satu siri fungsi dan kaedah untuk menulis kes ujian dan menjalankan ujian. Berikut ialah contoh mudah:
package main import "testing" func Add(a, b int) int { return a + b } func TestAdd(t *testing.T) { result := Add(2, 3) if result != 5 { t.Errorf("Add(2, 3) = %d; want 5", result) } }
Seperti yang ditunjukkan di atas, kami mula-mula mentakrifkan fungsi Tambah yang menerima dua integer sebagai parameter dan mengembalikan jumlahnya. Seterusnya, kami menggunakan fungsi Ujian rangka kerja ujian untuk menentukan fungsi ujian TestAdd. Dalam fungsi TestAdd, kami memanggil fungsi Tambah dan bandingkan hasilnya dengan hasil yang dijangkakan, jika tidak sama, gunakan kaedah t.Errorf untuk mengeluarkan mesej ralat.
Gunakan arahan go test untuk menjalankan ujian:
$ go test PASS ok _/path/to/package 0.019s
Kita boleh lihat daripada output yang ujian itu lulus.
2. Rangka kerja Testify pihak ketiga
Testify ialah rangka kerja ujian Golang yang popular dan berkuasa, yang menyediakan pelbagai fungsi penegasan yang mudah dan kaedah tambahan. Berikut ialah contoh menggunakan rangka kerja Testify:
package main import ( "testing" "github.com/stretchr/testify/assert" ) func Add(a, b int) int { return a + b } func TestAdd(t *testing.T) { result := Add(2, 3) assert.Equal(t, 5, result, "Add(2, 3) should be equal to 5") }
Dalam contoh di atas, kami telah menggunakan assert.Fungsi yang sama bagi rangka kerja Testify untuk penegasan. Ia menerima tiga parameter: t mewakili objek ujian, 5 mewakili hasil yang dijangkakan, dan keputusan mewakili hasil sebenar. Jika kedua-duanya tidak sama, mesej ralat akan dikeluarkan.
Jalankan ujian:
$ go test PASS ok _/path/to/package 0.019s
Kita boleh lihat ujian itu juga lulus.
3. Ujian penanda aras
Pengujian penanda aras sangat berguna apabila mengoptimumkan prestasi. Rangka kerja ujian Golang menyediakan fungsi Penanda Aras untuk melaksanakan ujian penanda aras. Berikut ialah contoh penanda aras:
package main import ( "testing" ) func Fibonacci(n int) int { if n <= 1 { return n } return Fibonacci(n-1) + Fibonacci(n-2) } func BenchmarkFibonacci(b *testing.B) { for i := 0; i < b.N; i++ { Fibonacci(20) } }
Dalam contoh di atas, kami telah mentakrifkan fungsi Fibonacci, yang digunakan untuk mengira jujukan Fibonacci. Seterusnya, kami menggunakan fungsi Penanda Aras rangka kerja ujian untuk menentukan fungsi penanda aras Fibonacci. Dalam fungsi ini, kami melakukan Fibonacci(20) 20 kali dan menggunakan gelung untuk mengulangi penanda aras.
Jalankan penanda aras:
$ go test -bench=. goos: darwin goarch: amd64 BenchmarkFibonacci-4 300000 4540 ns/op PASS ok _/path/to/package 1.402s
Kita dapat melihat bahawa hasil penanda aras menunjukkan bahawa setiap pelaksanaan Fibonacci(20) mengambil masa kira-kira 4540 nanosaat.
Kesimpulan:
Artikel ini memperkenalkan secara ringkas rangka kerja ujian Golang dan menyediakan contoh kod yang sepadan. Rangka kerja ujian terbina dalam boleh memenuhi kebanyakan keperluan ujian, manakala rangka kerja Testify pihak ketiga menyediakan kaedah yang lebih mudah. Selain itu, ujian penanda aras ialah cara penting untuk mengoptimumkan prestasi, dan rangka kerja ujian Golang juga menyokong penulisan ujian penanda aras. Dengan mempelajari dan menggunakan rangka kerja ujian ini, kami dapat memastikan kualiti dan prestasi kod dengan lebih baik serta meningkatkan kecekapan pembangunan perisian.
Atas ialah kandungan terperinci Pengenalan kepada rangka kerja ujian Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!