Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bolehkah Anda Memanggil Fungsi Ujian dari Luar Fail Ujian dalam Go?

Bolehkah Anda Memanggil Fungsi Ujian dari Luar Fail Ujian dalam Go?

Patricia Arquette
Patricia Arquetteasal
2024-10-26 06:32:02973semak imbas

Can You Call a Test Function from Outside a Test File in Go?

Bolehkah Anda Menggunakan Fungsi Ujian dari Luar Fail Pengujian?

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?

Jawapan: Had Rangka Kerja

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.

Corak Pengujian dalam Go

Go menyokong dua corak ujian utama:

  • Ujian kotak hitam: Menguji fungsi yang dieksport dari luar pakej, mensimulasikan cara pakej lain akan berinteraksi dengannya.
  • Ujian kotak putih: Menguji fungsi yang tidak dieksport dari dalam pakej, menyediakan akses kepada butiran pelaksanaan dalaman.

Melaksanakannya

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>

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>

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!

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