如何在vscode中设置go测试的路径

ux6nzvsh  于 2023-03-27  发布在  Go
关注(0)|答案(2)|浏览(371)

我有以下源代码树:

/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使用根项目文件夹?

dgenwo3n

dgenwo3n1#

从包的源代码目录运行测试是Go的默认行为。
https://pkg.go.dev/cmd/go#hdr-Testing_flags:
当'go test'运行一个测试二进制文件时,它是从相应包的源代码目录中运行的。根据测试的不同,当直接调用生成的测试二进制文件时,可能需要执行相同的操作。
要更改行为,可以使用相对路径(例如go project的template package test),或者在测试程序的开头更改所需的目录(例如TestMain的os.Chdir等)。

nx7onnlm

nx7onnlm2#

一种解决方案是在vscode的.vscode/settings.json或settings.json中定义一个测试环境变量:

{
  "go.testEnvVars": {
  "WORKSPACE_DIR": "${workspaceFolder}"
}

定义此变量后,可以使用它来更改当前工作目录,如下所示:

os.Chdir(os.Getenv("WORKSPACE_DIR"))

相关问题