Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mendapatkan Statistik Liputan Tepat untuk Ujian Luar dalam Go?

Bagaimana untuk Mendapatkan Statistik Liputan Tepat untuk Ujian Luar dalam Go?

Patricia Arquette
Patricia Arquetteasal
2024-10-27 16:02:29274semak imbas

 How to Get Accurate Coverage Stats for External Tests in Go?

Statistik Liputan untuk Ujian Luaran

Dalam Go, adalah disyorkan untuk menyimpan ujian dalam pakej yang sama seperti kod yang sedang diuji. Walau bagaimanapun, jika pangkalan kod anda terdiri daripada banyak fail ujian, anda mungkin lebih suka organisasi yang lebih bersih dengan mengasingkan ujian ini ke dalam pakej yang berbeza. Pendekatan ini mengehadkan ujian untuk mengakses API awam pakej, mempromosikan organisasi dan enkapsulasi yang lebih baik.

Memandangkan struktur berikut:

api_client:
    Client.go
    ArtistService.go

api_client_tests:
    ArtistService.Events_test.go
    ArtistService.Info_test.go
    UtilityFunction.go

Menjalankan ujian go bandsintown-api/api_client_tests -cover reports 100% perlindungan, tetapi perlindungan ini hanya berkaitan dengan UtilityFunction.go.

Penyelesaian:

Untuk mendapatkan statistik perlindungan bagi pakej api_client yang sedang diuji tanpa menggabungkan pakej:

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

Walau bagaimanapun, perlu diperhatikan bahawa pemisahan kod dan fail ujian ke dalam direktori berbeza bercanggah dengan konvensyen Go. Jika ujian kotak hitam dikehendaki, di mana tiada apa-apa di luar pakej boleh diakses, pertimbangkan untuk mengalihkan ujian ke pakej baharu tanpa menyusun semula fail:

api_client.go:

<code class="go">package api_client

// Only accessible within the package
var privateVar = 10

func Method() {}</code>

api_client_test.go:

<code class="go">package api_client_tests

import "testing"

func TestClient(t *testing.T) {
    Method() // Still accessible from another package
}</code>

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Statistik Liputan Tepat untuk Ujian Luar 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