Golang表格驱动测试

一、单元测试

1.0 go test

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

*_test.go文件中,有三种类型的函数:测试函数、基准测试(benchmark)函数、示例函数。一个测试函数是以Test为函数名前缀的函数,用于测试程序的一些逻辑行为是否正确;go test命令会调用这些测试函数并报告测试结果是PASS或FAIL。基准测试函数是以Benchmark为函数名前缀的函数,它们用于衡量一些函数的性能;go test命令会多次运行基准函数以计算一个平均的执行时间。

1.1 测试函数

每个测试函数必须导入testing包。测试函数有如下的签名:

func TestName(t *testing.T) {
    // ...
}

测试函数的名字必须以Test开头,可选的后缀名必须以大写字母开头:

func TestSin(t *testing.T) { /* ... */ }
func TestCos(t *testing.T) { /* ... */ }
func TestLog(t *testing.T) { /* ... */ }
1.2 表格驱动测试

所谓的表格驱动测试就是将测试用例和程序进行分离,将所有的测试用例放在一个数组中:

例如,需要测试一个加法函数的正确性:
在这里插入图片描述

  • AddComputer.go
package base

func Add(a, b int) int {
	return a + b
}
  • add_test.go
package main

import (
	"test/base"
	"testing"
)

func TestAdd(t *testing.T) {
	tests := []struct{ a, b, c int }{
		{0, 0, 0},
		{1, 1, 2},
		{-1, 1, 0},
		{2, 2, 4},
		{1, 0, 0},
	}
	for _, tt := range tests {
		result := base.Add(tt.a, tt.b)
		if result != tt.c {
			 t.Errorf("got %v, %v input;" +
			 	"expect %v ;but got %v",tt.a, tt.b, tt.c, result)
		}
	}
}

使用go test add_test.go即可运行测试程序:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-

二、覆盖率测试

https://books.studygolang.com/gopl-zh/ch11/ch11-03.html

对待测程序执行的测试的程度称为测试的覆盖率。

三、基准测试

https://books.studygolang.com/gopl-zh/ch11/ch11-04.html

基准测试是测量一个程序在固定工作负载下的性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BoringRong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值