我有一个 Go 存储库,其中有一些基准测试(在_test后缀的包中)。这些基准将其与一些第三方库进行比较。我没有在我的非基准代码中使用这些库。
我现在正在将我的 repo 迁移到 go 模块。我不想在我的 go.mod 中使用这些第三方库,因为我的库在正常使用时不需要它们,而且我不想将我的模块不必要地绑定到这些库。
推荐的 go-mod 方法是什么?我的想法:
- 在基准上构建标签
- 另一个回购的基准
- 我的模块中的模块
我有一个 Go 存储库,其中有一些基准测试(在_test后缀的包中)。这些基准将其与一些第三方库进行比较。我没有在我的非基准代码中使用这些库。
我现在正在将我的 repo 迁移到 go 模块。我不想在我的 go.mod 中使用这些第三方库,因为我的库在正常使用时不需要它们,而且我不想将我的模块不必要地绑定到这些库。
推荐的 go-mod 方法是什么?我的想法:
如果有人想要运行您的基准测试(例如,检查其声明的结果是否适用于他们的机器配置),那么他们需要知道这些基准测试最初运行时使用的依赖项版本。重现您的测试和基准测试结果所需的信息属于您的go.mod
文件。
但请注意,“拥有最低版本”与“导入”不同。
如果用户构建了您的包但没有构建并运行它的测试,或者如果他们在您的模块中构建了一些其他包,那么即使该依赖项包含在您的文件中,他们也不需要下载基准依赖项的源代码。go.mod
(并且https://golang.org/issue/36460中的提案在该属性上加倍:如果实施,该提案将避免加载从不导入的包的依赖项,可能会删除大量依赖关系图。)
因此,如果您真的不希望用户必须构建基准测试的依赖项,请将基准测试放在与您希望用户导入的包不同的包中。