golang开发:类库篇(五)go测试工具goconvey的使用
为什么要使用goconvey测试程序
goconvey 集成go test,go test 无缝接入。管理运行测试用例,而且提供了丰富的函数断言、非常友好的WEB界面,直观的查看测试结果。
如果没有goconvey的话,编写一个测试结果,首先运行被测试函数,然后判断被测试函数的运行结果,各种if判断,各种输出提示信息,而且回归测试也比较麻烦。但是如果使用了goconvey这些都就变得无比的简单。
还是看些使用代码比较简单明了。
怎么使用goconvey测试程序
第一步当然是安装goconvey
go get github.com/smartystreets/goconvey
看下被测试的代码
package main import "fmt" type Student struct { Num int Name string Chinaese int English int Math int } func NewStudent(num int, name string) (*Student,error) { if num < 1 || len(name) < 1 { return nil,fmt.Errorf("num name empty") } stu := new(Student) stu.Num = num stu.Name = name return stu,nil } func (this *Student) GetAve() (int,error) { score := this.Chinaese + this.English + this.Math if score == 0 { return 0,fmt.Errorf("score is 0") } return score/3,nil }
主要看下goconvey的测试代码
package main import ( "testing" . "github.com/smartystreets/goconvey/convey" ) func TestNew(t *testing.T) { Convey("start test new", t, func() { stu,err := NewStudent(0,"") Convey("have error", func() { So(err, ShouldBeError) }) Convey("stu is nil", func() { So(stu, ShouldBeNil) }) }) } func TestScore(t *testing.T) { stu,_ := NewStudent(1,"test") Convey("if error", t, func() { _,err := stu.GetAve() Convey("have error", func() { So(err, ShouldBeError) }) }) Convey("normal", t, func() { stu.Math = 60 stu.Chinaese = 70 stu.English = 80 score,err := stu.GetAve() Convey("have error", func() { So(err, ShouldBeError) }) Convey("score > 60", func() { So(score, ShouldBeGreaterThan, 60) }) }) }
进入到test代码目录,执行 go test