我想在 上发布一个软件包。为了开发它,我创建了以下文件结构github.com/mylogin/mypackagemypackage/├─ mypackage.go├─ go.mod // used to be mypackage.mod by mistake├─ tests/│ ├─ firsttest_test.go│ ├─ secondtest_test.gomypackage.go将具有一个函数 (mypackage(...))我的包装.mod目前是go.modmodule github.com/mylogin/mypackagego 1.17我的问题:在编写测试时,我需要导入:mypackage一方面,我无法导入,因为它还没有github.com/mylogin/mypackage另一方面,我应该导入,因为它最终是其他人(或操作)复制测试的方式。github.com/mylogin/mypackage我怎样才能摆脱这种矛盾呢?我的文件的正确布局应该是什么?
2 回答
红糖糍粑
TA贡献1815条经验 获得超6个赞
mypackage.mod
目前
必须将该文件称为 。Go 工具链将忽略任何其他名称。go.mod
一方面,我无法导入,因为它还没有
github.com/mylogin/mypackage
这实际上并不重要。如果你有一个文件(请参阅上面关于更正文件名的注释),Go知道在发出网络请求之前首先要考虑这个问题。这意味着它将在项目的顶层找到,并意识到您当前的项目就是该模块,并使用自己。go.mod
go.mod
慕无忌1623718
TA贡献1744条经验 获得超4个赞
一方面,我无法导入,因为它还没有
github.com/mylogin/mypackage
可以,因为它是同一模块中的包。import "github.com/mylogin/mypackage"
如果由于某种原因而无法正常工作,则文件中的指令或文件中的语句中可能存在拼写错误。module
go.mod
import
_test.go
也就是说,通常 测试将与它自己位于同一目录中:github.com/mylogin/mypackage
mypackage
mypackage/ ├─ go.mod ├─ mypackage.go ├─ firsttest_test.go ├─ secondtest_test.go
如果要从外部用户的角度测试包的 API,可以声明文件而不是 。_test.go
package mypackage_test
package mypackage
(有关更多详细信息,请参阅辅助测试
。
- 2 回答
- 0 关注
- 103 浏览
添加回答
举报
0/150
提交
取消