3、Golang-BDD(Behavior Driven Development)

简单整两句

如果你的公司使用敏捷开发,那你一定知道什么的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页面:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值