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

编译器如何区分哪个模块(库)仅用于测试?

编译器如何区分哪个模块(库)仅用于测试?

Go
偶然的你 2022-05-18 16:38:25
假设我们有一个项目使用一些仅用于测试的第三方模块(或库,如果你愿意)(即。github.com/stretchr/testify)。所以我们最终会得到go.mod这样的文件:module example.org/myappgo 1.13require (    ...    github.com/go-resty/resty/v2 v2.2.0    github.com/gorilla/mux v1.7.4    github.com/stretchr/testify v1.3.0    ...)正如我所看到的,用于生产代码的模块和仅用于测试的 testify 之间没有区别(即不像在 Java 中我们有依赖范围test等compile)所以 golang 编译器如何知道不需要哪个依赖对于运行时并且可以在编译的二进制文件中省略?
查看完整描述

1 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

它不仅包括您的所有内容go.mod;编译器会忽略当时正在构建的内容中未引用的任何内容。默认情况下,正确的测试文件被命名*_test.go并被非测试构建的构建约束排除。仅从这些文件中引用的任何内容都只会编译到测试版本中。



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

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信