这篇文章介绍了GoConvey测试框架的使用。GoConvey是一款针对Golang的测试框架,可以管理和运行测试用例,提供丰富的断言函数,并支持Web界面特性。文章详细介绍了如何安装GoConvey,如何编写测试用例,并展示了测试用例的执行结果。同时,文章还提供了一些编写测试用例的建议和参考链接。
可以管理和运行测试用例,同时提供了丰富的断言函数,并支持很多 Web 界面特性。
Golang虽然自带了单元测试功能,并且在GoConvey框架诞生之前也出现了许多第三方测试框架,但没有一个测试框架像GoConvey一样能够让程序员如此简洁优雅的编写测试代码。
安装
go get github.com/smartystreets/goconvey
案例
package convey
import (
"testing"
. "github.com/smartystreets/goconvey/convey"
)
func ShouldCustomize(actual interface{}, expected ...interface{}) string {
if actual == "ok" && expected[0] == "ok" {
return ""
} else {
return "Fail!!!"
}
}
func TestConvey(t *testing.T) {
Convey("test convey == convey", t, func() {
So("convey", ShouldEqual, "convey")
})
Convey("test convey == convery", t, func() {
So("convey", ShouldEqual, "convery")
})
// 定制断言函数
Convey("test customize should: ", t, func () {
So("ok", ShouldCustomize, "ok")
So("ok", ShouldCustomize, "no")
})
}
执行命令
[iarno@xxx convey]$ go test -v .
=== RUN TestConvey
test convey == convey ✔
1 total assertion
test convey == convery ✘
Failures:
* /hellogolang/convey/convey_test.go
Line 24:
Expected: 'convery'
Actual: 'convey'
(Should be equal)
Diff: 'convery'
2 total assertions
test customize should: ✔✘
Failures:
* /hellogolang/convey/convey_test.go
Line 29:
Fail!!!
4 total assertions
--- FAIL: TestConvey (0.00s)
FAIL
FAIL
小结
- import goconvey包时,前面加点号”.",以减少冗余的代码
- 测试函数的名字必须以Test开头,而且参数类型必须为*testing.T
- 每个测试用例必须使用Convey语句包裹起来,推荐使用Convey语句的嵌套,即一个函数有一个或多个测试函数,一个测试函数嵌套两层或三层Convey语句:当使用非BDD风格来写测试用例时,一个测试函数由两层Convey语句组成(第一层Convey语句对应目标函数,第二层Convey语句对应测试用例)