Bolehkah Anda Memanggil Fungsi Ujian Go Daripada Fail Bukan Ujian?

DDD
Lepaskan: 2024-10-25 15:55:02
asal
127 orang telah melayarinya

Can You Call Go Test Functions From Non-Test Files?

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:

  • Ujian kotak hitam: Menilai fungsi awam, dieksport, meniru cara pemanggil luar akan berinteraksi dengan mereka.
  • Ujian kotak putih: Menilai peribadi , fungsi yang tidak dieksport dalam pakej yang sama, memberikan pandangan yang lebih mendalam tentang operasi dalaman.

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
}
Salin selepas log masuk

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()
        }
    }
}
Salin selepas log masuk

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()
        }
    }
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!