Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Anda Boleh Menguji Fungsi Tidak Dieksport dalam Go?
Dalam Go, fungsi ujian tidak boleh dipanggil dari dalam kod itu sendiri. Sebaliknya, ujian unit bertujuan untuk dilaksanakan menggunakan ujian go
Go menyokong dua jenis ujian unit: kotak hitam dan kotak putih.
Ujian kotak hitam menguji fungsi yang dieksport dari luar pakej, mensimulasikan cara pakej luaran akan berinteraksi dengannya.
Pengujian kotak putih menguji fungsi yang tidak dieksport dari dalam pakej itu sendiri.
Pertimbangkan pakej yang dipanggil contoh dengan jumlah fungsi yang dieksport dan penambahan fungsi utiliti yang tidak dieksport.
<code class="go">// example.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>
Pengujian kotak hitam (dalam example_test.go):
<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>
Pengujian kotak putih (dalam example_internal_test.go):
<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>
Ringkasnya, ujian unit hendaklah dilaksanakan menggunakan arahan ujian go, dan jangan sekali-kali dipanggil terus dari dalam kod. Ujian kotak hitam dan putih menyediakan tahap akses yang berbeza kepada pelaksanaan pakej untuk tujuan ujian.
Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Menguji Fungsi Tidak Dieksport dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!