Gre*_*dge 18 testing go go-modules
给定一个 Golang (1.14+) 项目,该项目使用测试依赖项(如 github.com/stretchr/testify),现在假设该项目是一个可供其他人使用的公共库。
通常,当我现在使用时,go mod graph
我总是会看到这种依赖关系,例如:
github.com/its-me/my-great-library@1.0.0
github.com/stretchr/testify@v1.6.1 github.com/davecgh/go-spew@v1.1.0
github.com/stretchr/testify@v1.6.1 github.com/pmezard/go-difflib@v1.0.0
github.com/stretchr/testify@v1.6.1 github.com/stretchr/objx@v0.1.0
github.com/stretchr/testify@v1.6.1 gopkg.in/yaml.v3@v3.0.0-20200313102051-9f266ea9e77c
gopkg.in/yaml.v3@v3.0.0-20200313102051-9f266ea9e77c gopkg.in/check.v1@v0.0.0-20161208181325-20d25e280405
Run Code Online (Sandbox Code Playgroud)
go mod tidy
或者go mod download
似乎还从使用的库下载所有测试依赖项。exclude
但不是告诉每个人在他们的文件中使用,go.mod
有没有办法甚至阻止它被导出?
bcm*_*lls 13
go mod tidy
旨在提供运行所需的所有依赖项go test all
。请注意,在 Go 1.16 中,对于测试的传递go test all
依赖性会稍微不那么激进( https://tip.golang.org/doc/go1.16#all-pattern)。
但是,如果您自己的测试本身正在使用testify
,那么您的包的用户将需要下载testify
才能go test all
在自己的模块中运行。
(正如 colm.anseo 所指出的,如果您愿意,可以将较重的测试拆分到单独的包中,这样当您的用户运行时,go test all
他们就不会运行这些测试,也不需要下载这些依赖项的源代码。)
请注意,Go 1.17 添加了对模块图修剪的支持:如果您的模块指定go 1.17
或更高,并且模块的使用者不在自己的模块中使用您的测试依赖项,他们将不需要下载go.mod
该依赖项的源代码或文件。(一旦实现了https://golang.org/issue/44435go mod download
,当他们运行时也不会下载不相关的依赖项。)
归档时间: |
|
查看次数: |
13304 次 |
最近记录: |