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章/
作者
阿俊
发布于
2020-03-30
许可协议
CC BY-NC-SA 4.0

相关阅读