使用自訂標誌執行單元測試
在Visual Studio Code (VS Code) 中,當您執行和偵錯單元測試時,您可能會遇到挑戰需要提供特定的標誌。讓我們深入研究該問題並提供全面的解決方案。
問題概述
從 VS Code 執行單元測試時,使用者可能需要指定自訂標誌,例如 -提供的範例中的 ldflags。然而,在將這些標誌整合到 VS Code 的測試運行程式時,他們遇到了困難。
工作配置
透過實驗,發現需要兩個單獨的配置來同時實現運行測試和調試測試功能:
Run測試:
"go.testFlags": [
"-ldflags",
"-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn"
]
調試測試:
"go.testFlags": [
"-ldflags",
"'-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn'"
]
潛在問題
不同配置的原因在於 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) 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"
}
]
}
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3