Bagaimana untuk Menjalankan `go test` dalam Direktori Induk dengan Modul Berbilang Go?

Patricia Arquette
Lepaskan: 2024-11-02 21:51:30
asal
897 orang telah melayarinya

How to Run `go test` in a Parent Directory with Multiple Go Modules?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan