Heim > Backend-Entwicklung > Golang > Wie führe ich „go test' in einem übergeordneten Verzeichnis mit mehreren Go-Modulen aus?

Wie führe ich „go test' in einem übergeordneten Verzeichnis mit mehreren Go-Modulen aus?

Patricia Arquette
Freigeben: 2024-11-02 21:51:30
Original
943 Leute haben es durchsucht

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

Go-Test im übergeordneten Verzeichnis mehrerer Go-Module ausführen

Beim Arbeiten mit einer Verzeichnisstruktur, die mehrere Go-Module enthält, wie zum Beispiel:

<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>
Nach dem Login kopieren

Go-Test wird ausgeführt. oder gehen Sie test ./... aus dem Stammverzeichnis (/root) kann zu einem Fehler führen, der darauf hinweist, dass keine Pakete gefunden wurden. Dies liegt daran, dass go test erwartet, auf einem einzelnen Modul zu arbeiten.

Um diese Einschränkung zu überwinden, besteht ein Ansatz darin, einen Shell-Trick zu verwenden. Beispielsweise sollte der folgende Befehl die Unterverzeichnisse durchlaufen und in jedem Unterverzeichnis go test ./... ausführen:

<code class="pre">find . -type d -name main_test.go -exec go test '{}/' \;</code>
Nach dem Login kopieren

Alternativ implementieren viele Projekte ein Makefile oder ein Testskript, das diesen Vorgang ausführt. Ein test.sh-Skript könnte beispielsweise Folgendes enthalten:

<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>
Nach dem Login kopieren

Dieses Skript durchläuft das Repository, wechselt in jedes Unterverzeichnis, das eine main_test.go-Datei enthält, führt go test ./... aus und kehrt dann zurück in das übergeordnete Verzeichnis.

Größere Projekte führen möglicherweise eine Liste aller ihrer Module, wie beispielsweise die Liste, die vom go-cloud-Projekt verwaltet wird (https://github.com/google/go-cloud/blob/ master/allmodules). Diese Liste kann von Skripten verwendet werden, um die Module zu durchlaufen und verschiedene Vorgänge auszuführen, einschließlich der Ausführung von Tests.

Das obige ist der detaillierte Inhalt vonWie führe ich „go test' in einem übergeordneten Verzeichnis mit mehreren Go-Modulen aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage