gpt4 book ai didi

unit-testing - 用于测试的库是否包含在最终构建中

转载 作者:行者123 更新时间:2023-12-01 22:38:03 25 4
gpt4 key购买 nike

我想知道我仅用于测试的库是否会包含在最终的构建发行版中。我在 go.mod 中看到依赖关系/go.sum文件,但我无法检查最终的二进制文件。

我猜 Go 构建工具以某种方式处理冗余代码,但我没有找到任何证据。

有人可以指出我在文档中的那个位置或描述行为吗?

最佳答案

官方文档:Command go: Compile packages and dependencies:

When compiling packages, build ignores files that end in '_test.go'.



也来自 testing 的包文档:

To write a new test suite, create a file whose name ends _test.go that contains the TestXxx functions as described here. Put the file in the same package as the one being tested. The file will be excluded from regular package builds but will be included when the “go test” command is run.



构建您的应用程序甚至不会触及测试文件。所以不,仅从测试中引用的依赖项不包含在可执行二进制文件中。

还有考试有多难?编写一个简单的应用程序,构建它。注意编译后的二进制文件的大小。

添加一个测试文件,引用一些lib。再次构建,大小不会改变。现在,如果您从应用程序中引用包并再次构建,它会增长。

例子:
package main

func main() {
println("Hello world")
}

基于 linux (Go 1.13) 构建,大小为: 1,148,861 字节 .

添加测试:
package main

import (
"fmt"
"testing"
"time"
)

func TestOne(t *testing.T) {
fmt.Println(time.Now())
}

大小不变。现在添加 TestOne()功能(连同所需的导入)到主应用程序:大小增加到 2,165,259 字节 .

关于unit-testing - 用于测试的库是否包含在最终构建中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58932966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com