Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Anda Boleh Menguji Fungsi Tidak Dieksport dalam Go?

Bagaimanakah Anda Boleh Menguji Fungsi Tidak Dieksport dalam Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-26 05:47:02877semak imbas

How Can You Test Unexported Functions in Go?

Memanggil Fungsi Ujian daripada Fail Bukan Ujian Go

Dalam Go, fungsi ujian tidak boleh dipanggil dari dalam kod itu sendiri. Sebaliknya, ujian unit bertujuan untuk dilaksanakan menggunakan ujian go arahan.

Ujian Kotak Hitam dan Putih

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.

Contoh

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn