go - undefined main - 测试代码无法访问主包

标签 go

在下面的代码中:
../folder1/some_test.go

package main_test

import "testing"

func TestF(t *testing.T) {
    main.F()
}

../folder1/some_file.go
package main

func F() {

}
main.F()undefined main
$ go version
go version go1.14.3 linux/amd64
重命名包名 main_testmain解决问题。
为什么main_test包名不允许用于测试代码,在同一个文件夹中?

最佳答案

您必须导入包才能使用该包。
去.mod:

module example.app
main.go:
package main

func F() {}

func main() {}
main_test.go
package main_test

import (
    "testing"
    "example.app"  // import the main package
)

func TestF(t *testing.T) {
    main.F()
}
上面的代码假定 main*.go 与 go.mod 位于同一目录中,用于包 example.app .替换 example.app与您的模块的名称。调整路径以匹配您的应用程序。例如,如果 main*.go 文件在目录 cmd/example 中在包含 go.mod 的目录下,使用导入路径 example.app/cmd/example而不是 example.app .
请注意,测试可以导入 main package这种方式,但非测试代码不能。

关于go - undefined main - 测试代码无法访问主包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62825732/

相关文章:

image - 如何解决 "could not find default credentials"错误

go - 如何使用 gin 包将类型 *http Cookies 转换为字符串

go - 如何检查时间是否以毫秒为单位

几分钟后,Go 爬虫在从输出 channel 中选择时停止

go - 在 Go 中使用 google oauth2

go - 如何使用 Go 有效地下载大文件?

go - 了解接口(interface)中的接口(interface)(嵌入式接口(interface))

image - 在刚刚创建的 Go 中提供图像

go - Go中特定接口(interface)的 slice

包含结构的 golang 类型数组