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!