Golang Go语言中单测代码需要放到 package_test 包里面吗?

发布于 1周前 作者 nodeper 来自 Go语言

看到有的博客、很多代码都是把单测放到了 packagename_test 包里面?

请教,为什么要这样做呢?

go 官方鼓励这样做吗?


Golang Go语言中单测代码需要放到 package_test 包里面吗?
3 回复

白盒测试和黑盒测试

放在 packagename_test 就是属于黑盒测试,测试公开的接口

放在同一包里就属于白盒测试,可以测试内部方法。

更多关于Golang Go语言中单测代码需要放到 package_test 包里面吗?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


有道理,我懂了,谢谢

在Go语言中,关于单元测试的代码并不需要放在一个名为 package_test 的包中。实际上,Go语言通过特定的命名约定和目录结构来组织单元测试代码。

通常,单元测试文件被命名为 _test.go,并且它们应该与它们所测试的包位于同一目录下。这些测试文件的包声明应与被测试代码的包声明一致,但测试函数则以 Test 开头,并且其签名需要满足 func TestName(t *testing.T) 的形式。

例如,如果你有一个名为 main.go 的文件,其中包含一个名为 Add 的函数,你可以在同一目录下创建一个名为 main_test.go 的文件来编写针对 Add 函数的单元测试。在 main_test.go 文件中,包声明仍然是 package main,而测试函数则可能是这样的:

package main

import (
    "testing"
)

func TestAdd(t *testing.T) {
    result := Add(2, 3)
    if result != 5 {
        t.Errorf("Add(2, 3) = %d; want 5", result)
    }
}

通过这种方式,Go语言的测试框架(如 go test 命令)能够自动识别并执行这些测试函数。因此,无需创建一个名为 package_test 的特殊包来存放单元测试代码。

回到顶部