Heim >Backend-Entwicklung >Golang >Wie teste ich benutzerdefinierte Befehlszeilenflags in Go-Unit-Tests richtig?

Wie teste ich benutzerdefinierte Befehlszeilenflags in Go-Unit-Tests richtig?

DDD
DDDOriginal
2024-11-28 18:48:15345Durchsuche

How to Properly Test Custom Command-Line Flags in Go Unit Tests?

Testen benutzerdefinierter Befehlszeilenflags in Go-Unit-Tests

In einer modularen Go-Anwendung mit Unit-Tests das Festlegen benutzerdefinierter Befehlszeilenflags für Spezifische Tests können sich als Herausforderung erweisen. Die Verwendung des Flag-Pakets zum Setzen von Flags bei der Testinitialisierung kann zu Fehlern beim Ausführen der Tests führen.

Problem

Beim Ausführen des Testbefehls:

go test -test.v ./... -gamedir.custom=c:/resources

Der folgende Fehler kann auftreten:

flag provided but not defined: -gamedir.custom

Dieser Fehler weist darauf hin, dass das Flag -gamedir.custom von nicht erkannt wird test ausführbare Datei.

Analyse

Das Problem tritt auf, weil der Befehl go test alle Tests in einem Arbeitsbereich ausführt und die bereitgestellten Flags auf alle anwendet. Wenn jedoch ein bestimmter Test das Flag -gamedir.custom nicht verwendet, schlägt die Testausführung mit dem Fehler „Undefiniert“ fehl.

Lösung

Um dieses Problem zu beheben können Sie go test für jede ausführbare Testdatei separat ausführen und dabei die entsprechenden Flags für jeden Test angeben. Dies kann erreicht werden, indem der Befehl so geändert wird, dass die ausführbare Testdatei direkt übergeben wird:

go test -test.v ./path/to/test.go -gamedir.custom=c:/resources

Dieser Ansatz stellt sicher, dass nur die angegebene ausführbare Testdatei das Flag -gamedir.custom erhält, wodurch der Fehler mit dem undefinierten Flag behoben wird.

Das obige ist der detaillierte Inhalt vonWie teste ich benutzerdefinierte Befehlszeilenflags in Go-Unit-Tests richtig?. 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