在包中编写的测试最终会出现在最终导出的包中吗?他们是否向编译后的二进制文件添加任何垃圾或重量?
假设我有一个foo
Go 包:
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] 这不是什么方法“更好”的问题。这并不重要。请不要评论“那种方法不是更好”。
qq_笑_17
相关分类