无法生成覆盖

我的测试文件中有类似下面的内容


package stringutil


import (

    "testing"

    "gotest.tools/assert"

)

当我尝试测试它时,我得到了错误


$ go test github.com/user/stringutil

# github.com/user/stringutil

package 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 stringutil


import (

    "testing"

    "gotest.tools/assert"

    "gotest.tools/assert/cmp"

)

当我尝试测试它时,我得到了下一个错误


$ go test github.com/user/stringutil

# github.com/user/stringutil

package 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 stringutil


import (

    "testing"

    "gotest.tools/assert"

    "gotest.tools/assert/cmp"

    "gotest.tools/internal/format"

)

现在我在测试时遇到了另一个错误


$ go test github.com/user/stringutil

# github.com/user/stringutil

package 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 stringutil


import (

    "testing"

    "gotest.tools/assert"

    "gotest.tools/assert/cmp"

    "gotest.tools/internal/format"

    "gotest.tools/internal/difflib"

)


如果我不使用 assert 我的测试有效


$ go test github.com/user/stringutil

ok      github.com/user/stringutil      0.435s

看起来断言有问题?


LEATH
浏览 151回答 1
1回答

慕哥9229398

从使用说明:启用 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)。请注意,这意味着您将使用旧版本的软件包。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go