Dalam Go, ujian unit biasanya dijalankan menggunakan ujian go, yang mengenal pasti dan melaksanakan fungsi ujian yang ditanda dengan parameter pengujian.T. Walau bagaimanapun, persoalan timbul: bolehkah seseorang menggunakan fungsi ujian daripada fail bukan ujian untuk memulakan pelaksanaan ujian?
Malangnya, jawapannya tidak. Rangka kerja ujian Go direka untuk menguatkuasakan pemisahan antara kod ujian dan bukan ujian. Fungsi ujian hanya boleh dipanggil dari dalam fail ujian dan unit yang diuji mesti diimport daripada pakej yang sesuai.
Go menyokong dua corak ujian utama:
Pertimbangkan pakej contoh bernama contoh dengan fungsi tambah utiliti dan Jumlah yang dieksport fungsi yang menggunakan fungsi tambah dalaman.
example.go: Pakej dengan Fungsi yang Dieksport dan Tidak Dieksport
<code class="go">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 }</code>
<code class="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() } } }</code>
<code class="go">package example 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() } } }</code>
Kesimpulannya, menggunakan fungsi ujian dari luar fail ujian tidak mungkin kerana pemisahan yang direka antara kod ujian dan bukan ujian dalam Go. Ujian unit hendaklah sentiasa dilaksanakan melalui arahan go test, memastikan pengasingan kebimbangan dan mencegah pelaksanaan kod yang tidak diingini.
Atas ialah kandungan terperinci Bolehkah Anda Memanggil Fungsi Ujian dari Luar Fail Ujian dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!