Liputan Go Tidak Termasuk Fungsi dalam Pakej Luaran
Apabila menjalankan liputan kod pada projek Go yang mengandungi berbilang pakej, anda mungkin menghadapi situasi di mana fungsi dalam pakej selain daripada yang sedang diuji tidak termasuk dalam laporan liputan. Ini boleh berlaku apabila fungsi dalam satu pakej memanggil fungsi dalam pakej lain.
Masalah:
Seperti yang diterangkan dalam soalan yang disediakan, projek dengan struktur pakej yang serupa kepada yang berikut mempamerkan isu ini:
app/ api/ foo.go test_foo.go src/ db/ bar.go
foo.go memanggil fungsi dalam bar.go. Walau bagaimanapun, laporan liputan untuk bar.go menunjukkan garisan sifar dilindungi.
Penyelesaian:
Untuk menyelesaikan isu ini, anda perlu memasukkan bendera coverpkg semasa menjalankan liputan ujian. Bendera ini menyatakan bahawa liputan harus dikumpulkan untuk semua pakej, tanpa mengira lokasinya. Perintah yang diubah suai untuk menjalankan ujian liputan ialah:
go test -coverpkg=./... coverprofile=coverage.out ./...
Dengan menambahkan bendera coverpkg, laporan liputan kini akan menyertakan panggilan fungsi daripada foo.go ke bar.go.
Atas ialah kandungan terperinci Mengapa Perlindungan Go Tidak Termasuk Fungsi dalam Pakej Luaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!