使用标志运行和调试单元测试:解决冲突的 Protobuf 扩展
在 VS Code 中调试单元测试时,可能需要通过用于解决 Protobuf 扩展冲突的附加标志。本指南提供了此问题的解决方案,允许无缝调试。
VS Code settings.json 中的原始配置尝试添加所需的标志 '-ldflags "-X google.golang.org/protobuf/reflect /protoregistry.conflictPolicy=警告"'。但是,当 VS Code 生成标记周围带有单引号的测试命令时,此配置会遇到问题。
要解决此问题,需要调整 settings.json 中的配置。修改应删除标志值周围的单引号:
"go.testFlags": [ "-ldflags", "-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn" ]
通过此修改,VS Code 将生成一个测试命令,该命令正确包含必要的标志,而不会导致与 proto 扩展冲突相关的错误。
对于调试,由于使用 VS Code 界面调试特定测试的复杂性,建议采用不同的方法。使用特定标志编译测试二进制文件并利用 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
这里,foo.test 是生成的二进制文件,-count=1 表示用于测试的自定义标志,$(pwd)/some/path 可以是用于黄瓜式测试。将编辑器连接到 dlv 会话并开始调试。
其他信息
Go 还提供了通过内联标志启动 dlv 的便捷方法,对于 Vim 用户来说,vim -go 插件允许使用以下命令进行自定义断点设置和 dlv 连接:GoDebugConnect 127.0.0.1:2345。通过遵循上述步骤,开发人员可以有效地运行和调试带标志的单元测试,确保测试和代码维护的顺利进行。
以上是如何使用 VS Code 调试 Go 单元测试中冲突的 Protobuf 扩展?的详细内容。更多信息请关注PHP中文网其他相关文章!