我的测试文件中有类似下面的内容package stringutilimport ( "testing" "gotest.tools/assert")当我尝试测试它时,我得到了错误$ go test github.com/user/stringutil# github.com/user/stringutilpackage github.com/user/stringutil (test) imports gotest.tools/assert imports gotest.tools/v3/assert/cmp: code in directory C:\Users\abc\go\src\gotest.tools\assert\cmp expects import "gotest.tools/assert/cmp"FAIL github.com/user/stringutil [setup failed]FAIL然后我在导入中添加了“gotest.tools/assert/cmp”。package stringutilimport ( "testing" "gotest.tools/assert" "gotest.tools/assert/cmp")当我尝试测试它时,我得到了下一个错误$ go test github.com/user/stringutil# github.com/user/stringutilpackage github.com/user/stringutil (test) imports gotest.tools/assert imports gotest.tools/v3/internal/format: code in directory C:\Users\abc\go\src\gotest.tools\internal\format expects import "gotest.tools/internal/format"FAIL github.com/user/stringutil [setup failed]FAIL然后我在导入中添加了“gotest.tools/internal/format”package stringutilimport ( "testing" "gotest.tools/assert" "gotest.tools/assert/cmp" "gotest.tools/internal/format")现在我在测试时遇到了另一个错误$ go test github.com/user/stringutil# github.com/user/stringutilpackage github.com/user/stringutil (test) imports gotest.tools/assert imports gotest.tools/v3/assert/cmp imports gotest.tools/v3/internal/format imports gotest.tools/v3/internal/difflib: code in directory C:\Users\abc\go\src\gotest.tools\internal\difflib expects import "gotest.tools/internal/difflib"FAIL github.com/user/stringutil [setup failed]FAIL然后我在导入中添加了“gotest.tools/internal/difflib”package stringutilimport ( "testing" "gotest.tools/assert" "gotest.tools/assert/cmp" "gotest.tools/internal/format" "gotest.tools/internal/difflib")如果我不使用 assert 我的测试有效$ go test github.com/user/stringutilok github.com/user/stringutil 0.435s看起来断言有问题?
1 回答
慕哥9229398
TA贡献1877条经验 获得超6个赞
从使用说明:
启用 Go 模块 (go1.11+)
获取 gotest.tools/v3
导入“gotest.tools/v3/assert”
因此,gotest.tools/assert
您需要导入而不是导入gotest.tools/v3/assert
。这将引入最新版本的包(我假设您正在使用模块;这是最新版本的默认设置,除非您在 GOPATH 中工作并且没有 go.mod)。
导入gotest.tools/assert
将引入旧的非模块感知版本。这在包含评论的问题中进行了详细讨论
gotest.tools/assert 只是对 v3 版本包的有效导入,该包已经过时了
由于您的评论表明您没有使用模块,因此我又看了一眼。看来上述问题中的评论是不正确的,该项目的主人现在包括对模块的支持。不幸的是,这破坏了它在不支持模块的项目中的使用。您可以获得旧版本(需要使用 git)或在项目中使用模块(我推荐的方法)。
要将旧版本更改为 gotest.tools 文件夹(C:\Users\abc\go\src\gotest.tools
在您的情况下)并运行git checkout v2.3.0
(2.3.0 可能有效,但您可能需要返回到 2.2.0)。请注意,这意味着您将使用旧版本的软件包。
- 1 回答
- 0 关注
- 150 浏览
添加回答
举报
0/150
提交
取消