我想知道,如果您使用go build ./...编译二进制文件,那么将编译哪些代码到go二进制文件中。这将编译具有cli程序的二进制文件。对于这个cli程序,我有测试代码和非测试代码。我目前有几种不同的测试代码:
foo_test.go foo_testfoo_internal_test.go footestutil.go,提供测试实用程序函数在非测试代码中实际上没有引用测试代码。testutil函数仅在测试文件中导入。
如果测试代码实际上被编译成二进制文件,这有多大的问题?
发布于 2017-06-21 20:00:23
go二进制文件仅包括可从其main()入口点到达的代码。对于测试二进制文件,main()是测试运行程序。
至于“有多大问题”,如果包括在内.一个也没有。它会在一定程度上增加二进制大小和编译时间,但否则不会产生影响--根据定义,没有执行的代码什么也不做。
发布于 2019-11-26 22:59:37
我相信,如果您在其他无法访问的文件中有init()函数,它仍然会链接到可执行文件中。
_test.go文件仍将被排除在外。
当我们有一些不在_test文件中的测试助手代码时,这让我们很痛苦。其中一个函数具有init()函数,该函数在可执行启动时运行。
https://stackoverflow.com/questions/44685206
复制相似问题