行为驱动开发(BDD)实践示例

行为驱动开发(BDD)实践示例

引言

  BDD是对TDD理念的扩展。BDD强调有利害关系的技术团体和非技术团队都要参与到软件开发过程中。可以把它看成一种强调团体间合作的敏捷方法。大多数采用某种敏捷方法的团队最终都会遵循BDD的许多原则。在编写单元测试的时候,尽量使用BDD风格为测试命名。BDD风格强调使用完整的、描述性的、便于业务用户理解的名称或术语,避免使用技术术语。BDD希望类、方法和变量的名称尽可能地反映日常用语。

 行为驱动开发(BDD)实践示例

一、开发环境和工具

   1.1   Visual Studio 2013

  1.2   Resharp 10.0.2 或以上版本

  1.3   SpecFlow

  Visual Studio菜单中工具->扩展和更新。

  行为驱动开发(BDD)实践示例

  Nuget

  行为驱动开发(BDD)实践示例

 

二、需求

   输入一段明文,用Des的加密方式加密成密文。

  输入一段密文,用Des的解密方式解密成明文。

三、代码结构

  行为驱动开发(BDD)实践示例

 

 

四、添加情景或功能文件

行为驱动开发(BDD)实践示例

行为驱动开发(BDD)实践示例

修改情景

行为驱动开发(BDD)实践示例

五、编写测试代码

行为驱动开发(BDD)实践示例

 

 

六、运行测试代码

行为驱动开发(BDD)实践示例

 建议先编译代码再运行。

 测试理所当然的失败了,因为还没有实现功能。

行为驱动开发(BDD)实践示例

七、编写代码实现功能

行为驱动开发(BDD)实践示例

测试通过

行为驱动开发(BDD)实践示例

以类似的方式实现解密的需求。

八、添加需求

输入空字符串时,用Des加密,应返回空字符串。

输入null时,用Des的加密,应抛出ArgumentNullException。

九、添加新的情景

行为驱动开发(BDD)实践示例

 

行为驱动开发(BDD)实践示例

 

十、编写新的测试代码

行为驱动开发(BDD)实践示例

 

行为驱动开发(BDD)实践示例

十一、再次运行测试代码

行为驱动开发(BDD)实践示例

 

行为驱动开发(BDD)实践示例

加密空字符串时,没有返回空字符串,不符合预期。

加密null时,抛出了ArgumentNullException,符合预期。

十二、调整代码使加密空字符串满足需求

行为驱动开发(BDD)实践示例

 

行为驱动开发(BDD)实践示例

 

十三、源码

https://github.com/ErikXu/SimpleBDD

 

十四、本人Github

https://github.com/ErikXu

最近想把自己的Github经营起来,欢迎大家多交流。