登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-04-15 08:51:23 138浏览 收藏

在IT行业这个发展更新速度很快的行业,只有不停止的学习,才不会被行业所淘汰。如果你是Golang学习者,那么本文《编译器如何区分哪个模块(库)仅用于测试?》就很适合你!本篇内容主要包括##content_title##,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

假设我们有一个项目使用一些仅用于测试的第三方模块(或库,如果您愿意)(即 github.com/stretchr/testify)。所以我们最终会得到这样的 go.mod 文件:

module example.org/myapp

go 1.13

require (
    ...
    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 不同,java 中我们有 testcompile 等依赖范围),那么 golang 编译器如何知道哪个依赖项在运行时不是必需的并且可以在编译的二进制文件中省略?


解决方案


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

好了,本文到此结束,带大家了解了《编译器如何区分哪个模块(库)仅用于测试?》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>