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!