2 回答
TA贡献1812条经验 获得超5个赞
您必须导入包才能使用该包。
去.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 的 package 位于同一目录中example.app。替换example.app为您的模块的名称。调整路径以匹配您的应用程序。例如,如果 main*.go 文件位于cmd/example包含 go.mod 的目录下的目录中,则使用导入路径example.app/cmd/example而不是example.app.
请注意,测试可以通过这种方式导入主包,但非测试代码不能。
TA贡献1775条经验 获得超11个赞
问题是它main_test与main.
要访问其中的函数,main您需要main像这样导入和访问函数:main.F()
此外, notef以小写字母开头,因此不会从 package 中导出main。要在其中访问它,main_test需要将其导出(可以通过将其更改为以大写字母开头来完成:F)。
或者,您可以将测试文件更改为在 package 中main。
使用注释编辑:导入时main请注意导入路径按目录名称。通常,Go 中的开发人员将他们的包放在与包同名的目录中(例如,放在main名为 的目录中main)。在您的情况下,包和目录名称不同,因此导入将import ".../folder1"不是import ".../main". 您仍然可以使用main.F()来访问该功能:
package main_test
import (
"testing"
"../folder1" // use the full path to folder1 from the root of your module
)
func TestF(t *testing.T) {
main.F()
}
- 2 回答
- 0 关注
- 146 浏览
添加回答
举报