Go 语言学习系列(六): test

go 里面的 unit test 核心就是 go test 命令.

还有一个文件名字格式的问题, 一般 test 文件是 _test.go

那么咱们建一个这样的文件.

image

然后把下面的代码粘贴进去:

复制
package greetings import ( "testing" "regexp" ) // TestHelloName calls greetings.Hello with a name, checking // for a valid return value. func TestHelloName(t *testing.T) { name := "Gladys" want := regexp.MustCompile(`\b`+name+`\b`) msg, err := Hello("Gladys") if !want.MatchString(msg) || err != nil { t.Fatalf(`Hello("Gladys") = %q, %v, want match for %#q, nil`, msg, err, want) } } // TestHelloEmpty calls greetings.Hello with an empty string, // checking for an error. func TestHelloEmpty(t *testing.T) { msg, err := Hello("") if msg != "" || err == nil { t.Fatalf(`Hello("") = %q, %v, want "", error`, msg, err) } }

这样我们就完成了一个 test, 然后我们使用命令行执行命令就可以了:

复制
go test

运行结果如下:
image

还可以执行 -v 来获取执行测试脚本的细节.

复制
go test -v

image

OK, 现在我们模拟一个新手不小心修改坏了 greeting 文件中的代码, 比如改成下面:

复制
// Hello returns a greeting for the named person. func Hello(name string) (string, error) { // If no name was given, return an error with a message. if name == "" { return name, errors.New("empty name") } // Create a message using a random format. // message := fmt.Sprintf(randomFormat(), name) message := fmt.Sprint(randomFormat()) return message, nil }

这个时候再次运行 test 的时候, 就会出现:
image

这样就完成了单元测试, 学会了吗?

posted @   YanyuWu  阅读(52)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
历史上的今天:
2019-09-25 C# 8.0 新特性: Async Streams
点击右上角即可分享
微信分享提示