【发布时间】:2019-05-28 13:21:29
【问题描述】:
我有一个用 Golang 编写的简单程序。这是一个 API。所以在项目文件夹中,有一个名为 cmd 的文件夹,其中包含我的 main 包(用于初始化应用程序并定义 API 的端点)。还有一个以我的程序命名的文件夹,其中包含来自同样以我的程序命名的包中的多个文件。该包用作执行所有必要查询的模型,并包含我定义的所有类型。
我还创建了一个名为test 的文件夹。它包含我在名为test 的包下的所有测试文件。问题是要运行测试,我必须访问我的主包!有没有办法在 Golang 中做到这一点?我尝试简单地使用import "cmd/main",但它当然不起作用。
我也有一个想法。也许我可以将我所有的初始化函数(在cmd 文件夹中)移动到以我的程序命名的包中。这样我就可以在test 中做一个常规的import。我在cmd 的内部创建了一个main.go 在main 包中用作编译器的入口点。
我是 Go 新手,所以我不是很自信。你认为这是正确的方式吗?
谢谢。
编辑:显然有些人认为这个问题是重复的,但事实并非如此。这是我对 cmets 的解释:
我在发布之前阅读了这篇文章,但它没有回答我的问题 因为在那篇文章中,该人在主包中进行了测试。这 我问我的问题的原因是因为我不想让我的 在主包中进行测试。我宁愿把它们都放在一个测试文件夹中 在同一个包内。
【问题讨论】:
-
我在发布之前阅读了这篇文章,但它没有回答我的问题,因为在那篇文章中,该人在主包中进行了测试。我问我的问题的原因是因为我不想在主包中进行测试。我宁愿将它们全部放在同一个包内的
test文件夹中。 -
@Flimzy 我编辑了我的帖子,如果您是版主,可以删除“重复”标题吗?
-
“在同一个包内的测试文件夹中”在 Go 中是不可能的。包是文件夹范围的。
-
你不能导入“main”,所以你从“main”包中测试它。与 Go 工具抗争没有意义,只需像其他项目一样做。
标签: api unit-testing go