通常单元测试,能够帮我在代码发不到线上环境前,提前发现问题。本文着重讲解go语言的单元测试模块testing的使用、go test命令行、以及案例
一、代码示例:本案例是对上一讲的greetings/greetings.go模块中的Hello方法的测试
package greetings
import (
"regexp"
"testing"
)
func TestHello(t *testing.T) {
//定义参数结构体
type args struct {
name string
}
//定义测试用例结构体
tests := []struct {
name string
args args
want *regexp.Regexp
wantErr bool
}{
//添加单侧用例
{
"第一个单元测试用例",
args{name:"test_name"},
regexp.MustCompile("test_name"),
false,
},
{
"第二个单元测试用例",
args{name:""},
regexp.MustCompile(""),
false,
},
}
//循环执行单测用例
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, err := Hello(tt.args.name)
if (err != nil) != tt.wantErr {
t.Errorf("Hello() error = %v, wantErr %v", err, tt.wantErr)
return
}
if !tt.want.MatchString(got) {
t.Errorf("