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
Freigeben: 2024-12-20 00:46:09
Original
722 Leute haben es durchsucht

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
Nach dem Login kopieren
  • 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")
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage