在下面的代码中:
../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_test
至main
解决问题。为什么
main_test
包名不允许用于测试代码,在同一个文件夹中?
最佳答案
您必须导入包才能使用该包。
去.mod:
module example.app
main.go:package main
func F() {}
func main() {}
main_test.gopackage 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/