首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否只在测试文件中引用的go测试代码被编译成二进制文件?

是否只在测试文件中引用的go测试代码被编译成二进制文件?
EN

Stack Overflow用户
提问于 2017-06-21 19:56:12
回答 2查看 4.5K关注 0票数 10

我想知道,如果您使用go build ./...编译二进制文件,那么将编译哪些代码到go二进制文件中。这将编译具有cli程序的二进制文件。对于这个cli程序,我有测试代码和非测试代码。我目前有几种不同的测试代码:

  • 封装中的foo_test.go foo_test
  • 封装中的foo_internal_test.go foo
  • 包中的testutil.go,提供测试实用程序函数

在非测试代码中实际上没有引用测试代码。testutil函数仅在测试文件中导入。

如果测试代码实际上被编译成二进制文件,这有多大的问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-21 20:00:23

go二进制文件仅包括可从其main()入口点到达的代码。对于测试二进制文件,main()是测试运行程序。

至于“有多大问题”,如果包括在内.一个也没有。它会在一定程度上增加二进制大小和编译时间,但否则不会产生影响--根据定义,没有执行的代码什么也不做。

票数 10
EN

Stack Overflow用户

发布于 2019-11-26 22:59:37

我相信,如果您在其他无法访问的文件中有init()函数,它仍然会链接到可执行文件中。

_test.go文件仍将被排除在外。

当我们有一些不在_test文件中的测试助手代码时,这让我们很痛苦。其中一个函数具有init()函数,该函数在可执行启动时运行。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44685206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档