Heim  >  Artikel  >  Backend-Entwicklung  >  Wie führe ich Go-Tests nacheinander über mehrere Pakete hinweg aus?

Wie führe ich Go-Tests nacheinander über mehrere Pakete hinweg aus?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-04 07:59:30166Durchsuche

How to Execute Go Tests Sequentially across Multiple Packages?

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!

Stellungnahme:
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