【发布时间】:2017-11-24 21:29:18
【问题描述】:
我想知道如果您使用 go build ./... 编译二进制文件,将会将哪些代码编译到 go 二进制文件中。这将编译具有 cli 程序的二进制文件。对于这个 cli 程序,我有测试代码和非测试代码。我目前有几种类型的测试代码:
-
foo_test.go包装内foo_test -
foo_internal_test.go包装内foo -
testutil.go在包testutil中,提供测试实用功能
在非测试代码中实际上没有引用任何测试代码。 testutil 函数仅在测试文件中导入。
如果测试代码实际上被编译成二进制,这有多大问题?
【问题讨论】:
-
你指的是什么二进制文件?如果您不构建测试二进制文件,则不会编译
*_test.go文件,因此它们不仅在链接期间被消除,而且根本不会被编译。 -
我希望能澄清这个问题
-
*_test.go文件仅包含在指定包中的go test命令中。否则,编译器甚至都不会看到。 -
顺便说一句,您不能使用
go build ./...编译二进制文件,即构建通配符中包含的所有包,然后丢弃所有编译的对象。
标签: testing go compilation