无法 运行 从 GoLand (Intellij Idea) 进行测试:编译失败
Can't run go tests from GoLand (Intellij Idea): compilation failed
我在 go 中制作了简单的应用程序,并尝试 运行 使用 GoLand 的 GUI 工具进行测试。
在 myfile_test.go 文件附近的测试函数中,我按下应该开始测试的绿色按钮。但是我收到错误消息:"Compilation failed" 和控制台中的消息:
# 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
其他变体(运行 使用 Coverage/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
我通过初始化新的 go 模块和启用 Go 模块集成解决了这个问题:
1) 运行 在终端 go mod init my_module_name
2) 点击"File -> Settings"或按Ctrl+Alt+S
3) 选中 "Enable Go Modules Integration" 并应用按钮
现在 GoLand 中的所有测试功能都运行良好(包括覆盖率测试等)
这里的问题是您指向的是单个文件。所有其他文件,即使它们在包中,也不会被导入。 go build
具有相同的行为,如果您针对要构建的单个文件而忘记包含它在命令中使用的其他文件。
将测试类型更改为 "Directory",将文件更改为 "/project-root-dir"
。这将在构建期间包括目录中的所有文件,并且应该查找所有 _test.go
文件来执行测试。
@porfirion 的回答对我有用。
基本上,你需要在"Preferences" -> "Go" -> "Go Modules"
下勾选"Enable Go Modules integration"
Goland 然后会重新索引您的项目,如果您有一个包含许多模块的大型项目,这可能会花费很长时间。我的花了 30 分钟。您可以在 IDE 底部查看重建索引进度状态。
测试 运行 将在重建索引后工作。
我在 go 中制作了简单的应用程序,并尝试 运行 使用 GoLand 的 GUI 工具进行测试。
在 myfile_test.go 文件附近的测试函数中,我按下应该开始测试的绿色按钮。但是我收到错误消息:"Compilation failed" 和控制台中的消息:
# 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
其他变体(运行 使用 Coverage/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
我通过初始化新的 go 模块和启用 Go 模块集成解决了这个问题:
1) 运行 在终端 go mod init my_module_name
2) 点击"File -> Settings"或按Ctrl+Alt+S
3) 选中 "Enable Go Modules Integration" 并应用按钮
现在 GoLand 中的所有测试功能都运行良好(包括覆盖率测试等)
这里的问题是您指向的是单个文件。所有其他文件,即使它们在包中,也不会被导入。 go build
具有相同的行为,如果您针对要构建的单个文件而忘记包含它在命令中使用的其他文件。
将测试类型更改为 "Directory",将文件更改为 "/project-root-dir"
。这将在构建期间包括目录中的所有文件,并且应该查找所有 _test.go
文件来执行测试。
@porfirion 的回答对我有用。
基本上,你需要在"Preferences" -> "Go" -> "Go Modules"
下勾选"Enable Go Modules integration"Goland 然后会重新索引您的项目,如果您有一个包含许多模块的大型项目,这可能会花费很长时间。我的花了 30 分钟。您可以在 IDE 底部查看重建索引进度状态。
测试 运行 将在重建索引后工作。