实现go的单元测试
单元测试案例
测试步骤
假如我说我们现在已经封装好了一个test.go的文件,代码如下
package main
import "fmt"
func main() {
fmt.Println(GetFibonacci(6))
sum := GetNum(10)
fmt.Println(sum)
getRecursion := GetRecursion(10)
fmt.Println(getRecursion)
fbNum := GetFbNum(10)
fmt.Println(fbNum)
}
/**
递归就是自己调自己
递归一定要有终止条件,否则就会无限循环
*/
func GetFibonacci(n int) int {
// 如果是第0项或者第2项直接返回1
if n == 0 || n == 1 {
return 1
} else {
return GetFibonacci(n-1) + GetFibonacci(n-2)
}
}
/**
使用非递归实现斐波那契数列
*/
func GetFbNum(n int) int {
a := 1
b := 1
c := a + b
for i := 1; i <= n; i++ {
a = b
b = c
c = a + b
}
return a
}
/**
使用循环来实现自然数之和
*/
func GetNum(n int) (sum int) {
for i := 1; i <= n; i++ {
sum += i
}
return
}
/**
使用递归来实现自然数求和
*/
func GetRecursion(n int) (sum int) {
if n == 1 {
return 1
} else {
return n + GetRecursion(n-1)
}
}
然后我们需要在创建一个test_test.go的文件代码如下
package main
import "testing"
/**
测试斐波那契数列
*/
func TestGetFibonacci(t *testing.T) {
fibonacci := GetFibonacci(6)
if fibonacci != 13 {
t.Errorf("测试失败")
return
}
t.Logf("成功")
}
func TestGetRecursion(t *testing.T) {
mMap := make(map[int]int)
mMap[10] = 55
mMap[100] = 5050
for key, value := range mMap {
if GetRecursion(key) != value {
t.Errorf("测试失败")
return
}
}
t.Logf("测试成功 ")
}
文件目录结构
只需要把这俩个文件放在一个包里即可
用法
在上边我们可以看到在test_test.go的文件里,我们都用了Test开头,然后后边是Test.go里边的方法名。然后在调用Test.go的方法,用来做测试
测试
然后就会获得测试结果,对于go 的单元测试使用还是很简单的