So führen Sie Tests über mehrere Go-Pakete hinweg nacheinander aus
Beim Ausführen von Tests für mehrere Pakete mit go test ./... ist dies wichtig den Parallelisierungsaspekt zu berücksichtigen. Standardmäßig werden Tests paketübergreifend gleichzeitig ausgeführt. Bestimmte Szenarien, wie z. B. datenbankbasierte Tests, erfordern jedoch eine sequentielle Ausführung.
Im bereitgestellten Beispiel kommt es aufgrund der parallelen Testausführung zu Datenbankkonflikten. Jede Testdatei definiert globale Datenbankvariablen, die zu Konflikten führen können, wenn Tests gleichzeitig ausgeführt werden.
Lösung:
Um die sequentielle Ausführung über Pakete hinweg zu erzwingen, verwenden Sie das undokumentierte Flag -p zusammen mit go test wie folgt:
go test -p 1 ./...
Das Flag -p 1 erstellt und testet alle Pakete nacheinander und löst so das Konfliktproblem.
Alternative Lösung (mit Shell-Skript) :
Wenn die Verwendung des Flags -p 1 nicht möglich ist, kann ein alternativer Shell-Skript-basierter Ansatz verwendet werden. Hier ist ein Beispiel für ein Bash-Skript:
find . -name '*.go' -printf '%h\n' | sort -u | xargs -n1 -P1 go test
Dieses Skript listet alle Unterverzeichnisse auf, die .go-Dateien enthalten, entfernt Duplikate und führt go test nacheinander für jedes Unterverzeichnis aus.
Das obige ist der detaillierte Inhalt vonWie führe ich Go-Tests nacheinander über mehrere Pakete hinweg aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!