Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menjalankan `go test` dalam Direktori Induk bagi Modul Berbilang Go?

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

Barbara Streisand
Barbara Streisandasal
2024-10-29 03:09:29448semak imbas

How to Run `go test` in the Parent Directory of Multiple Go Modules?

Menjalankan ujian go dalam Direktori Induk Berbilang Modul Go

Apabila menghadapi struktur direktori dengan berbilang modul Go yang terletak dalam subdirektori, jalankan ujian go daripada direktori induk boleh menimbulkan cabaran. Coretan kod berikut menunjukkan isu ini:

/root
    /one
        go.mod
        go.sum
        main.go
        main_test.go
    /two
        go.mod
        go.sum
        main.go
        main_test.go

Menjalankan ujian go./... daripada direktori akar akan mengakibatkan ralat:

go: warning: "./..." matched no packages
no packages to test

Ini berlaku kerana ujian go ialah direka khusus untuk beroperasi pada satu modul yang terletak sama ada dalam direktori semasa atau induknya. Ia tidak menyokong modul bersarang atau melaksanakan ujian daripada direktori induk bagi berbilang modul.

Untuk menyelesaikan masalah ini, penyelesaian adalah dengan mencipta skrip shell atau menggunakan utiliti seperti find untuk menavigasi ke setiap modul individu dan melaksanakan go ujian dalam direktori tersebut. Contohnya:

cd /root/one
go test .
cd /root/two
go test .

Sebagai alternatif, sesetengah projek mungkin menggunakan Makefile atau skrip test.sh untuk mengautomasikan proses ini. Sebagai contoh, skrip test.sh dalam projek hipotetikal berikut melingkari senarai modul dan menjalankan ujian go untuk setiap direktori:

#!/bin/bash

modules="one two three"

for module in $modules; do
    cd $module
    go test .
    cd ..
done

Atas ialah kandungan terperinci Bagaimana untuk Menjalankan `go test` dalam Direktori Induk bagi Modul Berbilang 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