Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mencapai Liputan Ujian untuk Kod Dipisahkan daripada Ujian dalam Go?

Bagaimana untuk Mencapai Liputan Ujian untuk Kod Dipisahkan daripada Ujian dalam Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-29 20:56:29434semak imbas

How to Achieve Test Coverage for Code Separated from Tests in Go?

Liputan Ujian untuk Kod Diasingkan daripada Ujian

Walaupun kelebihan mengatur fail ujian secara berasingan untuk pangkalan kod yang lebih bersih dan mengehadkan ujian kepada interaksi API awam , ia menimbulkan cabaran dalam mendapatkan liputan untuk pakej sasaran yang sedang diuji (dalam kes ini, api_client).

Untuk menangani isu ini, kami boleh memanfaatkan bendera -coverpkg bersama-sama dengan nama pakej semasa menjalankan ujian:

go test -cover -coverpkg "api_client" "api_client_tests"

Arahan ini akan menjalankan ujian dengan liputan didayakan untuk pakej api_client.

Walaupun mengasingkan fail ujian daripada fail kod adalah dibenarkan, adalah penting untuk ambil perhatian bahawa ia menyimpang daripada pendekatan standard Go. Ini bermakna pembolehubah atau fungsi pakej-peribadi tidak akan dapat diakses oleh ujian di luar pakej, walaupun ia berada dalam direktori yang berasingan.

Untuk menguatkuasakan ujian kotak hitam, di mana ujian hanya boleh mengakses kaedah API awam, anda masih boleh menyimpan ujian dalam pakej berasingan tanpa memindahkan fail secara fizikal. Contohnya:

<code class="go">// api_client.go
package api_client

// Private variable not accessible outside package
var privateVar = 10

func PublicMethod() {}</code>
<code class="go">// api_client_test.go
package api_client_tests

import (
    "testing"

    "api_client" // Import api_client package
)

func TestPublicMethod(t *testing.T) {
    api_client.PublicMethod()
}</code>

Dalam contoh ini, fungsi privateVar dan Method daripada api_client.go tidak boleh diakses oleh fail ujian, memastikan ujian berinteraksi hanya melalui API awam.

Atas ialah kandungan terperinci Bagaimana untuk Mencapai Liputan Ujian untuk Kod Dipisahkan daripada 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