为了账号安全,请及时绑定邮箱和手机立即绑定

golang 模块名称更改导致本地测试失败

golang 模块名称更改导致本地测试失败

Go
紫衣仙女 2022-06-27 17:16:18
我有一个某人的代码的分支。它们的模块名称格式如下:module github.com/foo/bar/v3我已经在本地进行了一些更改,并将本地更新为 isgo.mod而v4不是,v3但这现在会导致本地测试的运行失败(见下文,我已经对输出进行了通用化)。注意:go.sum此时为空。$ go test -vgo: finding module for package github.com/foo/bar/v3go: found github.com/foo/bar/v3 in github.com/foo/bar/v3 v3.0.0# github.com/foo/bar/v4_test [github.com/foo/bar/v4.test]./some_test.go:232:19: x.Y undefined (type *package.Example has no field or method Y)FAIL    github.com/foo/bar/v4 [build failed]我不确定它为什么要尝试定位包的实际 v3 版本,从而更新 go.sum 以包含它?我可以从测试文件中看到,这个包使用了不同的包名(例如package foo_test),因此在编写测试代码时它不依赖导出的数据结构存在。所以也许这就是为什么会发生这种情况?它看到了对的引用x.Y,然后去xgithub 中查找。但是我不确定为什么当我在 go.mod 文件中使用 v3 引用时测试会运行良好?关于这里发生的事情以及在处理分叉项目时碰撞 go 模块的正确过程应该是什么想法?
查看完整描述

1 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

如果您在文件中更改module名称go.mod,则必须将所有import路径替换为更新后的module名称。

当你用 替换你的模块github.com/foo/bar/v3github.com/foo/bar/v4,你必须在find and replace整个项目中github.com/foo/bar/v3使用。github.com/foo/bar/v4

然后你$ go test -v应该正常运行。


查看完整回答
反对 回复 2022-06-27
  • 1 回答
  • 0 关注
  • 232 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号