在 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中文网其他相关文章!