Golang单元测试
一.概述
- import “testing”
- testing 提供对 Go 包的自动化测试的支持。通过
go test
命令,能够自动执行如下形式的任何函数
func TestXxx(*testing.T)
- 其中 Xxx 可以是任何字母数字字符串(但第一个字母不能是 [a-z]),用于识别测试例程。
- 要编写一个新的测试套件,需要创建一个名称以 _test.go 结尾的文件,该文件包含
TestXxx
函数,如上所述。 将该文件放在与被测试的包相同的包中。该文件将被排除在正常的程序包之外,但在运行 “go test” 命令时将被包含。 有关详细信息,请运行 “go help test” 和 “go help testflag” 了解。 - 一般测试方法是否有问题都是进行循环测试,模拟数据循环1000次看看是否有问题,下面的测试只是展示给大家看
二.相关命令
命令 | 介绍 |
---|---|
go test | 运行测试文件,只显示错误信息 |
go test -v | 运行测试文件,正确错误信息都显示 |
go test -test.run 方法名 | 运行指定方法,只显示错误信息 |
go test -v -test.run 方法名 | 运行指定方法,正确错误信息都显 |
三.实例
- 文件结构
- cal测试文件方法
- cal_test文件方法
- go test -v实例
- go test -v -test.run 指定方法测试实例
四.代码块
//cal
package testing
func Sum(a int, b int) int {
return a + b
}
func Sub(a int, b int) int {
return a - b
}
//cal_test
package testing
import (
"testing"
)
func TestSum(t *testing.T) {
res := Sum(10, 5)
if res != 15 {
t.Fatalf("TestSum() 执行结果不正确,希望值是=%v,现在值是=%v", 15, res)
}
t.Logf("TestSum() 执行结果正确")
}
func TestSub(t *testing.T) {
res := Sub(10, 5)
if res != 5 {
t.Fatalf("TestSub() 执行结果不正确,希望值是=%v,现在值是=%v", 5, res)
}
t.Logf("TestSub() 执行结果正确")
}