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

使用相同的包会污染编译后的二进制文件吗?

使用相同的包会污染编译后的二进制文件吗?

Go
喵喔喔 2023-06-01 17:00:13
长话短说:在包中编写的测试最终会出现在最终导出的包中吗?他们是否向编译后的二进制文件添加任何垃圾或重量?更长的版本:假设我有一个fooGo 包:pkg/   foo/     bar.go     bar_test.go我知道go 中的黑盒与白盒测试方法。简短回顾一下,我可以:已经bar_test.go声明了一个foo_test包,或者将它作为主foo包的一部分。方法 1 提供了更好的隔离,因为它允许专注于包的公共 API,因为它只访问foo. 此外,当应用程序代码使用 导入foo包时,仅编译import "pkg/foo"包含主包的文件。foo那很好。[1]但是,在某些情况下,将测试放入foo是一种方便的折衷方案。我自己并不是特别喜欢它,但我可以在几个代码库中看到它,并且我理解为什么有时它是必要的。我的问题是这些测试会发生什么。由于它们是包的一部分foo,当foo在某处导入时,我希望测试会一起进行。或者编译器是否足够聪明以剥离它们?[1] 这不是什么方法“更好”的问题。这并不重要。请不要评论“那种方法不是更好”。
查看完整描述

1 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

是的,Go 工具足够聪明,不会将它们传递给编译器。


查看完整回答
反对 回复 2023-06-01
  • 1 回答
  • 0 关注
  • 65 浏览
慕课专栏
更多

添加回答

举报

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