Go Testing单元测试
使用Golang编程时,一般只有在写最终的main函数时我们才有机会调用某个函数进行测试,在大型项目中如果只负责编写某个非main模块时应当如何测试函数的可用性?
Golang提供了Testing模块,这个模块可以让我们随时随地进行函数功能验证。
testing - The Go Programming Language (golang.org)
示例:
假设某个名为anytest的Package目录下有如下的正常业务逻辑:
package anytest
import (
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
type JsonResponse struct {
...
}
func Call() error{
resp,_ := http.Get("xxx")
respBody,_ := ioutil.ReadAll(resp.Body)
defer resp.Body.Close()
jsonResp := new(JsonResponse)
if err := json.Unmarshal(respBody, jsonResp); err != nil {
return err
}
fmt.Println(jsonResp.Stores)
return nil
}
然后我们创建anytest_test.go用于测试包内的某些函数或方法(必须以_test.go结尾,前缀随意彰显目的即可):
package anytest //同一package中
import (
"testing"
)
func TestCall(t *testing.T) { //必须以Test开头,推荐以Test_开头,后缀一般使用被测试的函数名标识
err := Call()
if err != nil {
t.Error(err) //testing.T自带log类打印方法
}
}
进行测试:
// 建议在对应package目录下执行对应package的go test 1. 测试本目录下所有test.go文件 go test 2. 测试某个Test函数(会遍历package目录下所有test.go文件找到对应的函数) go test -v -run Test_mytest 3. -run支持正则匹配,你可以一次指定多个测试函数 go test -v -run ^Test*
建了一个数据库和编程的交流群,用于交流和提升能力,目前主要专注于Golang/Java/Python以及TiDB数据库,群号:231338927,建群日期:2019.04.26。
如发现博客错误,可直接留言指正,感谢。

浙公网安备 33010602011771号