使用自訂標誌執行單元測試
在Visual Studio Code (VS Code) 中,當您執行和偵錯單元測試時,您可能會遇到挑戰需要提供特定的標誌。讓我們深入研究該問題並提供全面的解決方案。
問題概述
從 VS Code 執行單元測試時,使用者可能需要指定自訂標誌,例如 -提供的範例中的 ldflags。然而,他們在將這些標誌整合到 VS Code 的測試運行器時遇到了困難。
工作配置
透過實驗,發現需要兩個單獨的配置來同時實現運行測試和調試測試功能:
運行測試:
<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>
潛在問題
不同設定的原因在於VS Code 產生測試指令的方式。偵錯時,VS Code 會為指令新增其他參數,這會影響標誌的解釋方式。因此,調試配置中的單引號對於確保正確傳遞標誌是必要的。
可能的解決方案
建議用於調試複雜測試的替代方法是編譯測試二進位並啟動 dlv 偵錯會話。這樣可以更好地控制測試執行和調試體驗。
使用dlv 進行調試
以下步驟概述如何使用dlv 來調試單元測試:
使用必要的標誌編譯測試二進位文件,例如:
go test -c -ldflags "-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn" -gcflags="all=-N -l"
啟動無頭dlv 會話:
dlv exec ./foo.test --headless --listen=:2345 --log --api-version=2 -- -count=1 -- $(pwd)/some/path
在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 中使用自訂標誌執行單元測試?的詳細內容。更多資訊請關注PHP中文網其他相關文章!