简单整两句
如果你的公司使用敏捷开发,那你一定知道什么的Story Card。一个Story Card的正面会写明一个用户故事,然后开发团队据此进行开发,来满足这个用户故事:
其实这个Story Card不仅正面有内容,反面也会写内容,反面一般会写明这个Story是怎样被验收的。
通常这个验收会使用业务领域的语言来描述,这就避免了工程师和用户方的词汇表述不一致造成的种种误会。
这种描述的格式通常是固定的,包含三部分:
Given:
When:
Then:
大意是描述在一个给定场景下(Given),当用户操作了什么(When),应该出现什么结果(Then)。
以上的开发和验收方法,就被叫做BDD。
Go语言中对BDD的支持
在github中存在一个支持BDD的开源项目:convey
安装命令如下:
$ go get -u github.com/smartystreets/goconvey/convey
安装好以后,我们来看一段测试用例代码。
上代码
package testing
import (
"testing"
. "github.com/smartystreets/goconvey/convey"
)
func TestSpec(t *testing.T) {
// Only pass t into top-level Convey calls
Convey("Given 2 even numbers", t, func() {
a := 2
b := 4
Convey("When add the two numbers", func() {
c := a + b
Convey("Then the result is still even", func() {
So(c%2, ShouldEqual, 0)
})
})
})
}
测试代码描述的测试逻辑为:给定两个偶数(Given),当这两个数相加时(When),结果仍然应是偶数(Then)。
由此可见,BDD是一种更接近业务的表述方式。
执行测试用例的输出也更加符合人的语言习惯:
$ go test -v
=== RUN TestSpec
Given 2 even numbers
When add the two numbers
Then the result is still even .
1 total assertion
--- PASS: TestSpec (0.00s)
PASS
ok bdd 0.363s
除了使用go test -v命令执行外,convey项目还提供了一个Web页面,可以执行和查看运行结果:
$ ~/go/bin/goconvey.exe
2020/02/28 23:10:18 goconvey.go:61: Initial configuration: [host: 127.0.0.1] [port: 8080] [
打开浏览器输入:http://localhost:8080/,可以进入这个Web页面: