Menjalankan ujian go dalam Direktori Induk Berbilang Modul Go
Apabila bekerja dengan struktur direktori yang mengandungi berbilang modul go, seperti:
<code class="pre">/root /one go.mod go.sum main.go main_test.go /two go.mod go.sum main.go main_test.go</code>
Melaksanakan ujian pergi . atau pergi ujian ./... dari direktori akar(/root) boleh mengakibatkan ralat yang menunjukkan bahawa tiada pakej ditemui. Ini kerana ujian go menjangkakan untuk beroperasi pada satu modul.
Untuk mengatasi had ini, satu pendekatan ialah menggunakan helah shell. Sebagai contoh, arahan berikut harus berulang melalui subdirektori dan jalankan ujian go ./... dalam setiap satu:
<code class="pre">find . -type d -name main_test.go -exec go test '{}/' \;</code>
Sebagai alternatif, banyak projek melaksanakan Makefile atau skrip ujian yang melaksanakan operasi ini. Sebagai contoh, skrip test.sh boleh termasuk:
<code class="pre">for i in $(find . -type d -name main_test.go | sed 's|main_test.go||'); do cd $i go test ./... cd .. done</code>
Skrip ini akan berpusing melalui repositori, menukar kepada setiap subdirektori yang mengandungi fail main_test.go, laksanakan ujian go ./..., kemudian kembalikan ke direktori induk.
Projek yang lebih besar mungkin mengekalkan senarai semua modul mereka, seperti yang diselenggara oleh projek go-cloud (https://github.com/google/go-cloud/blob/ induk/semua modul). Senarai ini boleh digunakan oleh skrip untuk berulang melalui modul dan melaksanakan pelbagai operasi, termasuk menjalankan ujian.
Atas ialah kandungan terperinci Bagaimana untuk Menjalankan `go test` dalam Direktori Induk dengan Modul Berbilang Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!