我需要在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
的形式运行测试时,它的工作方式就像charm一样,接受arg1、arg2、arg3作为字符串片段,并将其传递给某个逻辑函数.到目前为止,一切顺利.
现在我想在VSCode中调试执行.我找到了this link个建议将所有命令行参数放在emits 的"args"字段中.json文件.所以我按照建议做了,我的发布.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"]
}
]
}
然而,这根本不起作用,因为当我运行一些逻辑测试时.在运行测试和调试测试模式下,flag.Parse()
和flag.Args()
都不接受任何参数,因此strSlice
只是一个空片段.
请建议如何启动.json应该被修改,以便命令行参数被flag.Parse()
接受并可用于进一步调试?