Testen mehrerer Module in einem übergeordneten Verzeichnis
Beim Arbeiten mit mehreren Go-Modulen in einem übergeordneten Verzeichnis kann es schwierig sein, Tests übergreifend auszuführen alle von ihnen. Stellen Sie sich eine Verzeichnisstruktur wie die folgende vor:
/root /one go.mod go.sum main.go main_test.go /two go.mod go.sum main.go main_test.go
Problem:
Es wird versucht, mit go test./. Tests für alle Module im übergeordneten Verzeichnis auszuführen. . führt zu dem Fehler:
go: warning: "./..." matched no packages no packages to test
Lösung:
Der Befehl go test ist für die Arbeit mit einem einzelnen Modul konzipiert, das im aktuellen Verzeichnis oder seinem übergeordneten Verzeichnis verwurzelt ist. Das Testen verschachtelter Module wird nicht unterstützt.
Um dieses Problem zu beheben, müssen Sie einen Shell-Trick verwenden. Ein Ansatz besteht darin, eine Kombination aus den Befehlen „find“ und „xargs“ zu verwenden, wie im Kommentar von Cerise Limón vorgeschlagen. Projekte erstellen oft ein Makefile oder ein test.sh-Skript, um diesen Prozess zu automatisieren.
Bei großen Projekten mit zahlreichen Modulen besteht ein systematischerer Ansatz darin, eine Liste aller Module zu führen (wie im Go-Cloud-Projekt von Google). . Das Projekt verwendet dann Skripte, die die Modulliste durchlaufen und Aufgaben wie das Ausführen von Tests für jedes Verzeichnis ausführen.
Beispiel:
Das folgende test.sh-Skript demonstriert dies Ansatz:
<code class="sh">#!/bin/bash for module in $(cat allmodules); do cd $module go test cd .. done</code>
Hinweis:
Sie benötigen möglicherweise keine separate Datei, um die Module aufzulisten, aber die Implementierung des Go-Cloud-Projekts bietet ein Beispiel dafür, wie größer es ist Projekte verwalten Tests mit mehreren Modulen.
Das obige ist der detaillierte Inhalt vonWie teste ich mehrere Go-Module in einem übergeordneten Verzeichnis?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!