写了一个核心的功能,或者一个公用的模块,怎么知道代码运行是否正确,就需要编写一个单元测试的代码来进行检验。
go提供了单元测试的类库。
import ( "testing")
导入即可编写单元测试。
单元测试的文件,需要和被测试的代码在同一个包下,文件名需要以_test.go为后缀
package library //与当前要测试的包名相同import ( "testing")func TestOpt(t *testing.T) { //test code}
测试函数需要以Test开头,并且需要传入*testing.T的参数,格式为TestFunc(t *testing.T)
运行测试文件:
go test //或者go test 路径+包名 //测试单个文件go test xxx_test.go xxx.go//打印详细信息go test -v//统计代码覆盖率go test -cover
测试代码:
package userimport ( "testing")func TestUser(t *testing.T){ u := NewUser(1, 1473820432, "qiishyx", "123455", 1) if u == nil{ t.Error("error object user") } if u.Id != 1{ t.Errorf("error id") } data := make(map[string]interface{}) data["Username"] = "chunlei" u.Edit(data) if u.Username != "chunlei"{ t.Errorf("update failed") } if !u.IsOnline() { t.Errorf("user status error") }}func TestManager(t *testing.T){ m := NewUserManager() data := make(map[string]interface{}) data["Id"] = 1 data["Username"] = "qiisyhx" data["Password"] = "123456" data["Status"] = 0 if !m.AddUser(data){ t.Errorf("add user failed") } if !m.DeleteUser(data["Id"].(int)){ t.Errorf("delete user failed") } if !m.UpdateUser(data){ t.Errorf("update user failed") }}