初见Go-Go测试

go test 命令

go test命令是一个按照一定的约定和组织来测试代码的程序。在包目录内,所有以_test.go为后缀名的源文件在执行go build时不会被构建成包的一部分,它们是go test测试的一部分。

*_test.go文件中,有三种类型的函数:测试函数基准测试(benchmark)函数、示例函数

  • 测试函数是以Test为函数名前缀的函数,用于测试程序的一些逻辑行为是否正确;go test命令会调用这些测试函数并报告测试结果是PASS或FAIL。
  • 基准测试函数是以Benchmark为函数名前缀的函数,它们用于衡量一些函数的性能;go test命令会多次运行基准测试函数以计算一个平均的执行时间。
  • 示例函数是以Example为函数名前缀的函数,提供一个由编译器保证正确性的示例文档。

go test 可以使用额外参数打印更多的信息,不过大部分IDE集成了这部分功能

参数名 功能
-v 打印每个测试函数的名字和运行时间
-run -run = xxx对应一个正则表达式,只有测试函数名被它正确匹配的测试函数才会被go test测试命令运行
-cover 获得测试的代码覆盖率摘要
-bench -bench = xxx 指定要运行的基准测试函数

测试函数

  • 每个测试函数必须导入testing包。
  • 测试函数名必须以 Test 开头
  • *testing.T 类型参数用于报告测试失败和附加的日志信息
func TestName(t *testing.T) {
   
    // ...
}

表格驱动的测试

为了方便添加测试数据,我们可以将测试数据合并到一个表格之中,比如一个结构体数组中,这种测试方式称之为表格驱动的测试

func TestBruteForce(t *testing.T) {
   
	var tests = []struct {
   
		s       string  // 主串
		pattern string  // 模式串
		want    int     // 主串中匹配到的模式串的起始下标
	}{
   
		{
   "abcd", "bcd", 1},
		{
   "abcd", "e", -1},
		{
   "abcd", "", 0},
	}

	for _, test := range tests {
   
		if got := bruteForce(test.s, test.pattern); got != test.want {
   
			t
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值