Ausführen von Unit-Tests mit benutzerdefinierten Flags
In Visual Studio Code (VS Code) können Sie beim Ausführen und Debuggen von Unit-Tests auf Herausforderungen stoßen Es müssen bestimmte Flags bereitgestellt werden. Lassen Sie uns das Problem genauer untersuchen und eine umfassende Lösung bereitstellen.
Problemübersicht
Beim Ausführen von Komponententests aus VS-Code müssen Benutzer möglicherweise benutzerdefinierte Flags angeben, wie z. ldflags im bereitgestellten Beispiel. Bei der Integration dieser Flags in den Testläufer von VS Code stießen sie jedoch auf Schwierigkeiten.
Arbeitskonfigurationen
Durch Experimente wurde festgestellt, dass dafür zwei separate Konfigurationen erforderlich sind Sowohl Testausführung als auch Debug-Testfunktionalität erreichen:
Test ausführen:
"go.testFlags": [
"-ldflags",
"-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn"
]
Debug-Test:
"go.testFlags": [
"-ldflags",
"'-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn'"
]
Grundlegendes Problem
Der Grund für die unterschiedlichen Konfigurationen liegt darin, wie VS Code den Testbefehl generiert. Beim Debuggen fügt VS Code dem Befehl zusätzliche Parameter hinzu, die sich auf die Art und Weise auswirken, wie die Flags interpretiert werden. Daher sind die einfachen Anführungszeichen in der Debug-Konfiguration erforderlich, um sicherzustellen, dass die Flags korrekt übergeben werden.
Mögliche Lösung
Eine alternative Methode zum Debuggen komplexer Tests ist um die Testbinärdatei zu kompilieren und eine DLV-Debugging-Sitzung zu starten. Dies ermöglicht eine genauere Kontrolle über die Testausführung und das Debugging-Erlebnis.
Verwenden von dlv zum Debuggen
Die folgenden Schritte beschreiben, wie Sie dlv zum Debuggen von Komponententests verwenden:
Kompilieren Sie die Testbinärdatei mit den erforderlichen Flags, wie zum Beispiel:
go test -c -ldflags "-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn" -gcflags="all=-N -l"
Eine kopflose DLV-Sitzung starten:
dlv exec ./foo.test --headless --listen=:2345 --log --api-version=2 -- -count=1 -- $(pwd)/some/path
Öffnen Sie in VS Code die Startkonfiguration Datei (Debug: Öffnen Sie launch.json). Erstellen Sie eine Konfiguration ähnlich der folgenden:
{
"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"
}
]
}
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3