我有以下源代码树:
/main.go
/templates/t.tmpl
/pkg/templates.go
/pkg/templates_test.go
/pkg/templates.go
定义了正常项目操作所需的var t = template.Must(template.ParseFiles("templates/t.tmpl")
的使用,因为binary是从根文件夹调用的。
然后,当我调试测试从templates_test.go
从vscode Must
失败,因为去测试当前目录是pkg
,而不是项目根
如何使vscode与go test
使用根项目文件夹?
2条答案
按热度按时间dgenwo3n1#
从包的源代码目录运行测试是Go的默认行为。
https://pkg.go.dev/cmd/go#hdr-Testing_flags:
当'go test'运行一个测试二进制文件时,它是从相应包的源代码目录中运行的。根据测试的不同,当直接调用生成的测试二进制文件时,可能需要执行相同的操作。
要更改行为,可以使用相对路径(例如go project的template package test),或者在测试程序的开头更改所需的目录(例如TestMain的
os.Chdir
等)。nx7onnlm2#
一种解决方案是在vscode的.vscode/settings.json或settings.json中定义一个测试环境变量:
定义此变量后,可以使用它来更改当前工作目录,如下所示: