在 VS Code 中调试和运行 Go 程序
习惯了 VS Code,使用 GoLand 总是不顺手。这里总结一些在 VS Code 中调试和运行 Go 程序的方法。
准备工作
必不可少的是 Go 插件。安装后可以做一些基础配置:
1 | { |
GoLand 打开项目时会自动初始化 go mod tidy
,VS Code 不会,需要手动执行一下。
launch.json 文件配置
在工程根目录下新建这个文件:.vscode\launch.json
,VS Code 读取此配置来运行和调试 Go 程序。文件的详细文档在这里,这里说一下详细的配置。
调试程序:
1 | // 注意,这份配置应该位于 launch.json 的 configurations 字段下 |
单元测试,以 Go 语言内置的单元测试框架 go test
为例:
1 | { |
这里重点说一下,"mode": "test"
下,实测 VS Code 会这样做:
- 执行
go test -c
,并且加上buildFlags
和program
字段对应的参数 - 调用上一步编译出的可执行文件,并且使用
args
字段对应的参数
假设你的目录结构为
1 | 根目录/ |
其中可执行文件位于 debug 目录,而单元测试文件位于 unittest 目录。那么你可以将 launch 配置为
1 | { |
等价于 powershell 中
1 | cd ./debug |
报错 flag provided but not defined: -test
执行单元测试可执行文件时,有一些命令行参数可以用,例如 -test.v
将每个 case 的结果打印出来,而不只是 PASS 和 FAIL。在 powershell 中,执行 ./unittest.exe -test.v
,会有上边这个报错。原因是 flag 中的点号 .
需要额外的转义。因此用双引号包裹参数即可解决:
1 | ./unittest.exe -test.v -test.failfast |
测试单个用例?
可以为编译好的可执行文件传入 -test.run
参数,也就是加到 args 中:
1 | { |