行为驱动开发(Behavior Driven Development,简称BDD)是一种敏捷软件开发技术,它鼓励开发者、QA和非技术人员之间的协作,以确保软件项目满足业务需求。本文将通过一个简单的.NET项目示例,向展示如何在实际开发中应用BDD方法。
在开发任何模块或项目时,遵循BDD意味着需要编写单元测试代码,并使用支持单元测试的工具,如NUnit、MSTest(Visual Studio集成)或其他喜欢的测试工具。本文将使用MBUnit作为测试工具,并使用SpecFlow将Gherkin语言转换为单元测试代码。
在开始之前,需要一个Gherkin语言编写的需求。例如,一个简单的需求可能是:
Given 有一个搜索表单,可以搜索姓名、地址和职业表
When 用户输入非空文本
And 文本长度超过3个字母数字字符
Then 用户将获得搜索结果
And 如果搜索结果为空,则会弹出消息框提示用户重新搜索
打开Visual Studio 2010,创建两个类库项目:
在SearchModule项目中添加一个配置文件,并粘贴以下配置:
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="specFlow" type="TechTalk.SpecFlow.Configuration.ConfigurationSectionHandler, TechTalk.SpecFlow"/>
</configSections>
<specFlow>
<unitTestProvider name="MbUnit"/>
</specFlow>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>
这个配置文件用于指定SpecFlow和将要使用的单元测试工具。
在Visual Studio中添加一个特性文件,命名为Search.feature,并按下OK。Visual Studio将为创建两个文件:一个包含Gherkin规范的特性文件,以及一个与之关联的代码文件,包含生成的C#代码。
将特性文件的内容更改为简单规范,并保存特性文件。保存后,相应的C#代码将在代码背后生成。
现在已经在C#中定义了特性,需要另一个抽象层次,以便为特性文件中描述的每个步骤定义(当然还有feature.cs文件中的步骤)定义。幸运的是,SpecFlow为提供了创建步骤定义的模板。将添加一个名为SearchStepDefinition.cs的步骤定义文件。
已经创建了基础,现在可以开始遵循纯BDD进行开发。将编写每个步骤定义方法的主体,同时编写与原始开发相关的代码。