Memanggil Fungsi Ujian daripada Fail Bukan Ujian
Dalam Go, ujian bergantung pada konvensyen dan metodologi tertentu. Salah satu konvensyen ini ialah ujian harus dipisahkan ke dalam fail ujian mereka sendiri, yang mesti berakhir dengan akhiran "_test.go".
Bolehkah Fungsi Ujian Dipanggil daripada Fail Bukan Ujian?
Jawapan ringkas: Tidak.
Bertentangan dengan soalan anda, fungsi ujian tidak boleh digunakan terus daripada fail Go bukan ujian. Pemisahan ini memastikan ujian kekal berbeza dan bebas daripada kod yang sedang diuji.
Corak Pengujian dalam Go
Go terutamanya menggunakan dua jenis ujian unit:
Contoh
Pertimbangkan pakej "contoh" berikut dengan "Jumlah" yang dieksport fungsi dan fungsi "tambah" yang tidak dieksport:
package example func Sum(nums ...int) int { sum := 0 for _, num := range nums { sum = add(sum, num) } return sum } func add(a, b int) int { return a + b }
Ujian kotak hitam (example_test.go):
package example_test import ( "testing" "example" ) func TestSum(t *testing.T) { tests := []struct { nums []int sum int }{ {nums: []int{1, 2, 3}, sum: 6}, {nums: []int{2, 3, 4}, sum: 9}, } for _, test := range tests { s := example.Sum(test.nums...) if s != test.sum { t.FailNow() } } }
Ujian kotak putih (example_internal_test.go):
package example_test import "testing" func TestAdd(t *testing.T) { tests := []struct { a int b int sum int }{ {a: 1, b: 2, sum: 3}, {a: 3, b: 4, sum: 7}, } for _, test := range tests { s := add(test.a, test.b) if s != test.sum { t.FailNow() } } }
Kesimpulannya, memanggil fungsi ujian daripada fail bukan ujian melanggar prinsip ujian Go. Pakej ujian yang berasingan harus digunakan untuk tujuan ujian unit, mematuhi aliran kerja dan konvensyen yang ditetapkan.
Atas ialah kandungan terperinci Bolehkah Anda Memanggil Fungsi Ujian Go Daripada Fail Bukan Ujian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!