668 字
3 分钟
Go 语言学习笔记 -第11章
Go 语言学习笔记 -第11章
测试
传统的方法
package main
import ( "fmt")
//一个被测试函数
func addUpper(n int) int { res := 0 for i := 1; i <= n-1; i++ { res += i }
return res}
func main() {
//传统的测试方法 res := addUpper(10) if res != 55 { fmt.Printf("addupper错误 返回值=%v 期望值=%v\n", res, 55) } else { fmt.Printf("addupper正确 返回值=%v 期望值=%v\n", res, 55) }
}缺点:
1、不方便, 需要在main函数中去调用,需要去修改main函数 如果现在项目正在运行,就可能去停止项目
2、不利于管理, 因为我们测试多个函数或者多个模块中,都需要卸载main函数, 不利于管理和清晰我们思路
testing测试框架
单元测试可以解决如下问题:
1)确保每个函数是可运行的,并且运行结果是正确的
2)确保写出来的代码性能是好的
3)单元测试能及时的发现程序设计或实现的逻辑错误 性能测试可以发现程序设计上的一些问题
案例:
calc.go
package calc
//一个被测试函数func addUpper(n int) int { res := 0 for i := 1; i <= n; i++ { res += i }
return res}
func getSub(n1 int, n2 int) int { return n1 - n2}calc_test.go
package calc
import ( "fmt" "testing")
//测试用例func TestAddUpper(t *testing.T) {
res := addUpper(10) if res != 55 { // fmt.Printf("addupper(10) 执行错误,期望值=%v,实际值=%v", 55, res) t.Fatalf("addupper(10) 执行错误,期望值=%v,实际值=%v", 55, res) }
t.Logf("addupper(10) 执行正确")
}
func TestHello(t *testing.T) {
// t.Logf("TestHello 执行正确") fmt.Println("TestHello 执行正确")
}执行: go test -v 命令就可以看到结果
细节总结
1、测试用例文件必须是以xxx_test.go结尾
2、测试用例函数必须以Test开头, 一般来说就是Test+被测试的函数名
3、TestAddUpper(t testing)的形参类型必须是testing
4、一个测试用例文件中,可以有多个测试用例函数
5、运行测试用例指令:
go test #运行正确无日志,错误才会输出日志
go test -v #运行正确或者错误, 都会输出日志
6、当出现错误时,可以使用t.Fatalf来格式化输出错误信息,并退出程序
7、t.Logf方法可以输出相应的日志
8、测试用例函数,并没有放在main函数中,也执行了
9、PASS表示测试用例运行成功、FAIL表示失败
10、测试单个文件 go test -v xx_test.go
11、测试某个方法 go test -v —test.run TestMethod
Go 语言学习笔记 -第11章
https://blog.zhequtao.com/posts/golang/go-learning/学习笔记-go/第11章/