无法从 GoLand (Intellij Idea) 运行 go 测试:编译失败

por*_*ion 4 testing intellij-idea go goland

我在 go 中制作了简单的应用程序,并尝试使用 GoLand 的 GUI 工具运行测试。

在靠近 test func 的 myfile_test.go 文件中,我按下应该开始测试的绿色按钮。但我收到错误消息:“编译失败”和控制台中的消息:

# command-line-arguments [command-line-arguments.test]
./myfile_test.go:21:11: undefined: MyStruct
./myfile_test.go:22:12: undefined: MyFuncName
./myfile_test.go:33:12: undefined: AnotherStruct

Compilation finished with exit code 2
Run Code Online (Sandbox Code Playgroud)

其他变体(使用覆盖率/CPU 配置文件运行测试)也不起作用。GoLand 2020.1 EAP。在旧版本的 GoLand 中也出现了同样的问题。

但从控制台测试正常启动:

go test -v

=== RUN   TestMyStruct_MyMethod
--- PASS: TestMyStruct_MyMethod (0.00s)
PASS
ok      _/home/username/projects/my_project_name     0.002s
Run Code Online (Sandbox Code Playgroud)

小智 9

@porfirion 的回答对我有用。

基本上,您需要在 GoLand 中的“首选项”->“Go”->“Go 模块”下勾选“启用 Go 模块集成”

Goland 然后将重新索引您的项目,如果您有一个包含许多模块的大型项目,这可能需要很长时间。我的花了30分钟。您可以在 IDE 底部检查重建索引进度状态。

重新索引后,测试运行将起作用。

  • 您还需要运行 `go mod init` 来创建一个 go.mod 文件,如 @porfirion 的答案所示。我还发现,直到我关闭项目并重新打开它才起作用。 (3认同)

por*_*ion 5

我通过初始化新的 go 模块并启用 Go Modules Integration 解决了这个问题:

1)在终端运行 go mod init my_module_name

2)点击“文件->设置”或按Ctrl+Alt+S

3) 勾选“启用 Go 模块集成”和应用按钮 项目设置窗口

现在 GoLand 中的所有测试功能都运行良好(包括覆盖测试等)