我需要在Go中构建一个测试用例,在执行时接受一些命令行参数。
测试文件看起来很简单:
package somelogic_test
import (
sl "example.com/somelogic"
"flag"
"testing"
)
func TestSomeLogic(t *testing.T) {
flag.Parse()
strSlice := flag.Args()
sl.SomeLogic(strSlice)
}
当我以
go test -v somelogic_test.go -args arg1 arg2 arg3
的形式运行测试时,它能正常工作,接受arg1、arg2、arg3作为字符串切片,并将其传递给SomeLogic函数。到目前为止,一切顺利。现在我想在VSCode中调试执行过程。我找到了这个链接,它建议将所有命令行参数都放在launch.json文件的"args"字段中。所以我按照建议进行了操作,我的launch.json配置如下:
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch file",
"type": "go",
"request": "launch",
"mode": "auto",
"program": "${fileDirname}",
"env": {},
"args": ["-v","somelogic_test.go","-args","arg1","arg2","arg3"]
}
]
}
然而,这根本不起作用,因为当我在“运行测试”和“调试测试”模式下运行“somelogic_test.go”时,
flag.Parse()
和 flag.Args()
命令都不会接受任何参数,结果 strSlice
只是一个空的切片。请建议如何修改 launch.json,以便命令行参数被
flag.Parse()
接受并可供进一步调试使用?