Golang Go语言中单测代码需要放到 package_test 包里面吗?
看到有的博客、很多代码都是把单测放到了 packagename_test 包里面?
请教,为什么要这样做呢?
go 官方鼓励这样做吗?
Golang Go语言中单测代码需要放到 package_test 包里面吗?
白盒测试和黑盒测试
放在 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
的特殊包来存放单元测试代码。