在VS Code 中使用標誌偵錯單元測試
在Visual Studio Code (VS Code) 中執行單元測試時,可能需要包含附加標誌。例如,要解決測試期間遇到的特定錯誤,必須提供標誌 -ldflags "-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn"。
要在其中設定此標誌VS Code,settings.json 中的go.testFlags 配置可以修改如下:
<code class="json">"go.testFlags": [ "-ldflags", "-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn" ]</code>
但是,將此配置與測試資源管理器或程式碼鏡頭功能結合使用仍然可能會導致錯誤訊息恐慌: proto: 擴充編號1042 已在訊息google.protobuf.FileOptions 上註冊。
運行和調試測試配置之間的區別
透過比較 go.testFlags 配置運行和調試測試,發現關鍵的區別在於標誌值的格式。對於執行測試,標誌值應括在一組雙引號 (") 中,而對於偵錯測試,標誌值應括在單引號 (') 和雙引號 (") 中。這種區別可能是由於 VS Code 使用的底層偵錯工具鏈的限製或要求。
建議配置
為了適應運行和調試測試功能,它建議為每個場景定義單獨的 go.testFlags 配置。對於運行測試,請使用以下配置:
<code class="json">"go.testFlags": [ "-ldflags", "-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn" ]</code>
對於調試測試,請使用以下配置:
<code class="json">"go.testFlags": [ "-ldflags", "'-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn'" ]</code>
其他調試注意事項
對於更複雜的偵錯場景,可能需要使用dlv 偵錯器。透過使用附加標誌(例如 -gcflags="all=-N -l")編譯測試二進位檔案並啟動 headless dlv 會話,可以將編輯器連接到偵錯環境。對於 VS Code,可以透過開啟 launch.json 檔案並配置類似於以下內容的偵錯配置來實現:
<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>
此配置允許透過 VS Code 中的偵錯面板進行無縫偵錯。
以上是如何在 VS Code 中配置'go.testFlags”以運行和調試單元測試?的詳細內容。更多資訊請關注PHP中文網其他相關文章!