在包中编写的测试最终会最终导出到包中吗?它们会在已编译的二进制文件中添加任何垃圾或重量吗?
假设我有一个foo
Go包:
pkg/
foo/
bar.go
bar_test.go
我知道black box vs white box测试方法。简短回顾一下,我可以:
bar_test.go
个声明foo_test
的程序包,或foo
软件包中。方法1提供了更好的隔离性,因为它可以专注于包的公共API,因为仅访问foo
的导出标识符。同样,当应用程序代码使用foo
导入import "pkg/foo"
包时,仅编译包含主foo
包的文件。真好。 [1]
但是,在某些情况下,将测试放入foo
是一种方便的折衷方案。我本人并不特别喜欢它,但是我可以在几个代码库中看到它,并且我理解为什么有时有必要。
我的问题是关于这些测试会发生什么。由于它们是软件包foo
的一部分,因此,当foo
导入到某处时,我希望可以进行测试。还是编译器足够聪明以剥离它们?
[1]这不是什么方法更好的问题。没关系。请放弃对“该方法还更好”的评论。