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>
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>
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>
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!