我正在使用VS Code在MacOS上测试这个非常简单的Go代码。该项目包含以下样本包/文件:
在终端命令行上,所有内容均已构建且所有测试均通过:go build。//(适用于每个文件夹)进行测试。//(测试工作并通过)
但是,从VS代码来看,我有两个问题:1.从软件包到软件包的导入根本不起作用。例如:
package test
import (
service "azure.com/myproj/cmd/service" // VS complains on this line when running the test.
)
转到测试标签:
unknown import path "azure.com/myproj/cmd/service":
cannot find module providing package
azure.com/myproj/cmd/service
转到标签:
/Users/computername/go/src/azure.com/projname/cmd/service/tests
>Finished running tool: /usr/local/bin/go test -c -o
/var/folders/q5/hm9v_6x53lj0gj02yxqtkmd40000gn/T/vscode-goKGOMES/go- code-check azure.com/myproj/cmd/service/tests
can't load package: package
azure.com/myproj/cmd/service: unknown import path
"azure.com/myproj/cmd/service": cannot find module
providing package azure.com/myproj/cmd/service
我不明白上面hm9v_6x53lj0gj02yxqtkmd40000gn的 VS代码在做什么以及如何更改它。它看起来像一个缓存。
总结一下:在通过VS Code进行测试时,我不明白为什么它使用了运行测试的命令(如上所述),以及为什么它找不到常规的“开始构建”和“开始”的导入。 test。“命令通过终端没有问题。
再次:从终端命令行构建所有内容,并通过所有测试。
似乎显然是与VS Code相关的问题。
我找到了解决我问题的答案。VS不喜欢该项目的文件路径结构。这是我所做的更改:
将main.go从azure.com/myproj/cmd/service/main/main.go上移至azure.com/myproj/cmd/service/main.go
将服务实现(service.go)移至内部文件夹:azure.com/myproj/internal/service/service.go
将测试移至内部文件夹:azure.com/myproj/internal/service/test/service_test.go
VS代码如何能够运行测试而不会抱怨找不到导入。
所以现在我的/ cmd / service文件夹中只有main.go。一切都包含在内部,包括测试。我怀疑将main.go埋入子文件夹会使VS Code感到困惑。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句