一、单元测试
1.0 go test
go test_test.go
*_test.go
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
二、覆盖率测试
https://books.studygolang.com/gopl-zh/ch11/ch11-03.html
对待测程序执行的测试的程度称为测试的覆盖率。
三、基准测试
https://books.studygolang.com/gopl-zh/ch11/ch11-04.html
基准测试是测量一个程序在固定工作负载下的性能。