单元测试是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java 里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。
单元测试规则
首先,单元测试的文件名必须以_test.go结尾,一般是测试的文件名加上_test.go。其次,单元测试的函数必须以Test开头,并且都只有一个参数,其类型为*testing.T。另外,Test后面应该紧跟一个大写字母。因此,单元测试的函数格式就是func TestXxx(*testing.T)
除此之外还有几个需要注意的点,1.测试用例文件不会参与正常源码编译,不会被包含到可执行文件中。2.测试用例可以不传入 *testing.T 参数。3.新建的测试文件一般和源文件 放同一目录.4.go单元测试需引入包 testing。
样例
//待测文件hello.go
package main
import "fmt"
func Hello() string {
return "hello world"
}
func main(){
fmt.Print(Hello())
}
//测试文件hello_test.go
package main
import "testing"
func TestHello(t *testing.T) {
a:= Hello()
if a != "hello world" {
t.Error("不通过")
}
}
可以看出被测文件的运行结果是打印一个hello world,而这也是我们期望的运行结果。而测试文件则是测试该文件是否输出了hello world。
单元测试命令
//1、单个文件进入到测试文件所在目录
go test hello_test.go hello.go
ok command-line-arguments (cached)
//2、如果该目录有go.mod存在,直接 go test
>go test
PASS
ok hello 3.634s
go单元测试有多种命令,以上举例了最简单的一种。先是使用go test进行测试(用goland的话也可以选择直接运行该测试文件),如果输出了PASS,即代表测试成功。