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

我在 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

其他变体(使用覆盖率/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


小怪兽爱吃肉
浏览 462回答 3
3回答

SMILET

基本上,您需要在 GoLand 中的“Preferences”->“Go”->“Go Modules”下勾选“Enable Go Modules integration”然后,Goland 将重新索引您的项目,如果您有一个包含许多模块的大型项目,这可能需要很长时间。我的花了30分钟。您可以在 IDE 底部查看重新索引的进度状态。测试运行将在重新索引后工作。

哆啦的时光机

我解决了初始化新 go 模块和启用 Go Modules 集成的问题:1) 在终端中运行go mod init my_module_name2)点击“文件->设置”或按Ctrl+Alt+S3)选中“启用 Go 模块集成”并应用按钮现在 GoLand 中的所有测试功能都运行良好(包括覆盖测试等)

翻过高山走不出你

这里的问题是你指向一个文件。所有其他文件,即使它们在包中,也不会被导入。go build具有相同的行为,如果您要构建单个文件并且忘记在命令中包含它使用的其他文件。将测试类型更改为“目录”,将文件更改为"/project-root-dir". 然后,这将在构建期间包含目录中的所有文件,并应查找所有_test.go文件以执行测试。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go