-
Notifications
You must be signed in to change notification settings - Fork 2.9k
BDD
Calvin Xiao edited this page Jan 27, 2014
·
4 revisions
BDD(Behavior Driven Development)的最大好处是,可以让Product Owner(需求人员),功能测试设计人员 和 功能测试实现人员,在同一个地方工作,不需要从需求到测试计划到测试代码的映射。
BDD正宗的做法是Cucumber(黄瓜)的JVM版 和 JBehave,个人喜欢JBehave多一点,因为不需要写正则表达式。
但如果要在项目里推行,ScalaTest可能更加实际,因为不需要建立文本到代码的映射,也就没有英文语法的问题,没有文本与代码间抽象粒度的问题。
需求与测试计划合一的User Story: 语句到Java测试代码的映射
showcase里的代码: examples/showcase/src/test/scala/account/UserManagerSpec.scala
class UserManagerSpec extends FeatureSpec with GivenWhenThen with Matchers with BeforeAndAfterAll with WebBrowser
这个UserManagerSpec多重继承了ScalaTest的多个特征:
- FeatureSpec 和 GiveWhenThen,看起来最BDD的组织形式,支持feature/scenario关键字来组织cases,以及的info/markup的消息语句,还有标准的given/when/then关键字,scalatest里还有其他几种风格,见Selecting testing styles
- Matchers,关于assert的DSL,可以写成 i should be(1),见Using matchers
- BeforeAndAfterAll ,与JUnit里的概念相同。
- WebBrowser,关于Selenium的DSL,可以写成 click on id("q"),见Using Selenium