Heim >Backend-Entwicklung >Golang >Wie kann ich Befehlszeilenargumente in Go-Unit-Tests effektiv testen?

Wie kann ich Befehlszeilenargumente in Go-Unit-Tests effektiv testen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-20 00:46:09700Durchsuche

How Can I Effectively Test Command-Line Arguments in Go Unit Tests?

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:

  • Führen Sie go test für jede _test.go-Datei separat aus: Übergeben Sie den entsprechenden Parametersatz für jeden Test einzeln. Zum Beispiel:
go test -test.v ./testfile1_test.go -gamedir.custom=c:/resources
go test -test.v ./testfile2_test.go
  • Ignorieren Sie die nicht verwendeten Flags im Test: Ändern Sie Ihre Testdateien, um die nicht verwendeten Flags zu ignorieren. Beispielsweise können Sie im Test, der das Flag -gamedir.custom nicht verwendet, den folgenden Code hinzufügen:
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!

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