Befehlszeilenargumente in Go-Unit-Tests testen
In Ihrer Frage erwähnen Sie ein Problem bei der Verwendung von Befehlszeilenflags in Go-Unit Tests. Sie verfügen über eine modulare Anwendung mit Tests, die verschiedene Sätze von Anwendungsmodulen verwenden, von denen einige über Befehlszeilen-Flags optimiert werden. Wenn Sie die Tests jedoch mit benutzerdefinierten Befehlszeilen-Flags ausführen, erhalten Sie eine Fehlermeldung, die besagt, dass das Flag nicht definiert ist.
Das zugrunde liegende Problem besteht darin, dass die ausführbare Testdatei alle Befehlszeilenparameter anwendet, es sei denn, einer oder mehr davon wird darin ignoriert. In Ihrem Fall haben Sie mehrere Tests, von denen einige das benutzerdefinierte Flag verwenden, andere nicht.
Um dieses Problem zu beheben, haben Sie zwei Möglichkeiten:
go test -test.v ./testfile1_test.go -gamedir.custom=c:/resources go test -test.v ./testfile2_test.go
var customPath string func init() { flag.StringVar(&customPath, "gamedir.custom", "", "Custom game resources directory") } func TestFunc(t *testing.T) { if testing.Short() { return } t.Skip("Skipping this test as it uses `-gamedir.custom` flag") }
Die Prüfung „testing.Short()“ wird verwendet, um festzustellen, ob der Test vorliegt wird im Kurzmodus ausgeführt, was normalerweise der Fall ist, wenn alle Tests gleichzeitig ausgeführt werden. Wenn der Test im Kurzmodus ausgeführt wird, wird er übersprungen. Andernfalls wird der Test übersprungen, da das Flag -gamedir.custom nicht verwendet wird.
Das obige ist der detaillierte Inhalt vonWie kann ich Befehlszeilenargumente in Go-Unit-Tests effektiv testen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!