简介
Ginkgo
Ginkgo是一个基于Go语言的BDD测试框架,一般用于Go服务的集成测试。
说明
本文的内容部分来自Ginkgo网站,部分来自使用过程中的经验总结。
Ginkgo网址:http://onsi.github.io/ginkgo/
源码链接:https://github.com/onsi/ginkgo
实操
1.安装Ginkgo
go get github.com/onsi/ginkgo/ginkgo
go get github.com/onsi/gomega/… 附加的库,配合使用,下一篇会详细讲解
配置环境变量,加到$GOPATH/bin或$PATH2.新建
- 创建一个测试文件夹如example,进入文件夹,执行命令ginkgo bootstrap生成模版文件,文件名是example_suite_test.go,里面有入口函数
- 执行ginkgo generate example,example可以不写,默认是当前文件夹名称,生成测试例模板文件example_test.go
- 加_test后缀是为了和当前文件夹内已有代码做区分
example_test.go代码中默认会import当前文件夹
3.模块
常用的10个:It、Context、Describe、BeforeEach、AfterEach、JustBeforeEach、BeforeSuite、AfterSuite、By、Fail
- It是测试例的基本单位,即It包含的代码就算一个测试用例
- Context和Describe的功能都是将一个或多个测试例归类
- BeforeEach是每个测试例执行前执行该段代码
- AfterEach是每个测试例执行后执行该段代码
- JustBeforeEach是在BeforeEach执行之后,测试例执行之前执行
- BeforeSuite是在该测试集执行前执行,即该文件夹内的测试例执行之前
- AfterSuite是在该测试集执行后执行,即该文件夹内的测试例执行完后
- By是打印信息,内容只能是字符串,只会在测试例失败后打印,一般用于调试和定位问题
- Fail是标志该测试例运行结果为失败,并打印里面的信息
还有一个Specify和It功能完全一样,It属于其简写
4.使用
var _ = Describe("Book", func() {
var (
book Book
err error
json string
)
BeforeEach(func() {
json = `{
"title":"Les Miserables",
"author":"Victor Hugo",
"pages":1488
}`
})
JustBeforeEach(func() {
book, err = NewBookFromJSON(json)
})
AfterEach(func() {
By("End One Test")
})
Describe("loading from JSON", func() {
Context("when the JSON parses succesfully", func() {
It("should populate the fields correctly", func() {
Expect(book.Title).To(Equal("Les Miserables"))
Expect(book.Author).To