为什么要使用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