测试驱动开发(TDD)与行为驱动开发(BDD)入门指南
立即解锁
发布时间: 2025-08-13 02:41:34 阅读量: 8 订阅数: 20 


敏捷开发与Scrum实战指南
# 测试驱动开发(TDD)与行为驱动开发(BDD)入门
## 1. TDD 入门:使用 NUnit 进行测试驱动开发
### 1.1 解决编译错误
在开始测试之前,我们需要解决编译错误。由于 `tddMath` 类不存在,我们需要进行以下操作:
- 向 `TDDWithNunit` 项目中添加一个名为 `tddMath.cs` 的新类,并将其标记为 `public`。
- 向 `tddMath` 类中添加一个名为 `Add` 的新方法,该方法接受两个 `decimal` 类型的参数,并返回一个 `decimal` 类型的值。
完成上述操作后,`tddMath` 类的代码如下:
```csharp
namespace TDDWithNunit
{
public class tddMath
{
public decimal Add(decimal num1, decimal num2)
{
return decimal.MinValue;
}
}
}
```
### 1.2 运行 NUnit 测试
运行 NUnit 测试有两种方式:通过 NUnit 客户端或通过 Visual Studio 插件(如 TestDriven.Net)。如果从 NuGet 安装了 NUnit,则需要下载并安装一个测试运行器(如 TestDriven.Net)。若未从 NuGet 安装,则机器上应该已经安装了 NUnit 客户端。这里我们使用 NUnit 客户端,具体步骤如下:
1. 打开 `Program Files NUnit2.5.9.10348 NUnit` 启动 NUnit 客户端。
2. 点击 `File Open Project`,导航到测试项目生成的 DLL 文件所在位置,将测试项目的 DLL 加载到 NUnit 中。
3. 点击 `Run` 按钮,NUnit 将运行测试并输出结果。
### 1.3 让测试通过
当测试失败后,我们需要修改 `Add` 方法的代码,使其能够正确计算两个数的和。修改后的代码如下:
```csharp
public decimal Add(decimal num1, decimal num2)
{
return num1 + num2;
}
```
重新构建解决方案并再次运行测试,此时测试应该会通过。
### 1.4 添加另一个测试
接下来,我们添加一个新的测试,用于测试当传入三个数字时,`Add` 方法是否能返回正确的结果。新测试的代码如下:
```csharp
[Test]
public void Add_returns_6_when_given_1_2_and_3()
{
Assert.That(tMath.Add(1, 2, 3) == 6);
}
```
由于现有的 `Add` 方法不接受三个参数,编译时会出现错误。为了解决这个问题,我们需要重构 `Add` 方法,使其能够接受任意数量的参数。重构后的代码如下:
```csharp
public decimal Add(params decimal[] numbers)
{
return numbers.Sum();
}
```
再次运行 NUnit 客户端,两个测试应该都会通过。
### 1.5 TDD 总结
通过上述步骤,我们学习了如何使用 NUnit 进行测试驱动开发,具体内容如下:
- 如何使用 `.msi` 文件或 NuGet 安装 NUnit。
- 如何创建包含测试类的项目。
- 如何设置测试类以使用 NUnit 框架。
- 如何编写测试。
- 编写测试后,需要先解决所有编译错误,让测试失败,然后再添加足够的代码使测试通过。
- 当一个测试通过后,可以继续进行下一个测试,可能需要对现有方法进行重构以通过新的测试。
## 2. BDD 入门:使用 SpecFlow 进行行为驱动开发
### 2.1 BDD 概述
行为驱动开发(BDD)是测试驱动开发(TDD)的下一步。TDD 关注系统的内部工作,而 BDD 关注系统的整体行为。BDD 通过与系统的利益相关者交流,了解他们期望的行为,从而更清晰地理解系统。BDD 的测试用例使用自然语言编写,这使得利益相关者和非开发人员也能参与到系统的开发中。
### 2.2 外部 - 内部软件开发
0
0
复制全文
相关推荐










