Heim  >  Artikel  >  Backend-Entwicklung  >  Wie konfiguriere ich „go.testFlags' sowohl zum Ausführen als auch zum Debuggen von Unit-Tests in VS-Code?

Wie konfiguriere ich „go.testFlags' sowohl zum Ausführen als auch zum Debuggen von Unit-Tests in VS-Code?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-27 06:32:29621Durchsuche

How to Configure `go.testFlags` for Both Running and Debugging Unit Tests in VS Code?

Debuggen von Unit-Tests mit Flags in VS-Code

Beim Ausführen von Unit-Tests in Visual Studio Code (VS-Code) kann dies erforderlich sein Fügen Sie zusätzliche Flags hinzu. Um beispielsweise einen bestimmten Fehler zu beheben, der beim Testen aufgetreten ist, muss das Flag -ldflags "-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn" angegeben werden.

Um dieses Flag innerhalb zu setzen VS Code kann die go.testFlags-Konfiguration in Settings.json wie folgt geändert werden:

<code class="json">"go.testFlags": [
    "-ldflags",
    "-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn"
]</code>

Die Verwendung dieser Konfiguration in Verbindung mit dem Test-Explorer oder der Code-Lens-Funktionalität kann jedoch immer noch zu einer Panik mit Fehlermeldungen führen : proto: Erweiterungsnummer 1042 ist bereits in der Nachricht google.protobuf.FileOptions registriert.

Unterscheidung zwischen Run- und Debug-Testkonfigurationen

Durch Vergleich der go.testFlags-Konfigurationen für Bei den Ausführungs- und Debug-Tests wurde festgestellt, dass der Hauptunterschied in der Formatierung des Flag-Werts liegt. Für Lauftests sollte der Flag-Wert in einen einzelnen Satz doppelter Anführungszeichen (") eingeschlossen werden, während für Debug-Tests der Flag-Wert in einfache Anführungszeichen (') und doppelte Anführungszeichen (") eingeschlossen werden sollte. Diese Unterscheidung ist wahrscheinlich auf eine Einschränkung oder Anforderung in der zugrunde liegenden Debugging-Toolchain zurückzuführen, die von VS Code verwendet wird.

Empfohlene Konfiguration

Um sowohl Lauf- als auch Debug-Testfunktionen zu unterstützen, ist es Es wird empfohlen, für jedes Szenario separate go.testFlags-Konfigurationen zu definieren. Verwenden Sie für Lauftests die folgende Konfiguration:

<code class="json">"go.testFlags": [
    "-ldflags",
    "-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn"
]</code>

Für Debug-Tests verwenden Sie die folgende Konfiguration:

<code class="json">"go.testFlags": [
    "-ldflags",
    "'-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn'"
]</code>

Zusätzliche Überlegungen zum Debuggen

Für komplexere Debugging-Szenarien kann es erforderlich sein, den DLV-Debugger zu verwenden. Durch Kompilieren der Testbinärdatei mit zusätzlichen Flags wie -gcflags="all=-N -l" und Initiieren einer Headless-DLV-Sitzung wird es möglich, einen Editor mit der Debugging-Umgebung zu verbinden. Für VS Code kann dies erreicht werden, indem die Datei launch.json geöffnet und eine Debug-Konfiguration ähnlich der folgenden konfiguriert wird:

<code class="json">{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Debug Test",
            "type": "go",
            "request": "attach",
            "mode": "remote",
            "port": 2345,
            "host": "127.0.0.1",
            "showLog": true,
            "trace": "log"
        }
    ]
}</code>

Diese Konfiguration ermöglicht ein nahtloses Debuggen über das Debug-Panel in VS Code.

Das obige ist der detaillierte Inhalt vonWie konfiguriere ich „go.testFlags' sowohl zum Ausführen als auch zum Debuggen von Unit-Tests in VS-Code?. 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