第一个TDD,简单的2层C#项目 - 我应该进行单元测试?

时间:2010-05-22 00:51:59

标签: unit-testing tdd nunit

4 个答案:

答案 0 :(得分:4)

  

测试似乎适得其反   没有理由失败的事情   (自动属性,空   构造函数)...

它是......在空构造函数或自动属性中没有逻辑可供测试。

  

我什么时候写第一个   单元测试?

在编写第一行可测试代码之前。考虑一下您希望方法执行的行为。根据所需的行为编写测试。该测试(以及随后的所有其他测试)体现了您的程序规范。

  

我在哪里写第一次单元测试?

在您创建的第一个测试类中。

这可能是最好的在线资源:

测试驱动设计简介(TDD)
http://www.agiledata.org/essays/tdd.html

答案 1 :(得分:2)

您必须深入了解TDD的思维方式。如果您没有使用TDD,您通常会编写一些代码,然后编写单元测试以确保代码符合您的预期,并处理一些不同的极端情况。使用TDD,您实际上首先编写测试,通常使用您尚未编写的类和方法。

一旦你编写了测试,并且你对测试是如何使用代码的一个很好的例子感到满意,你就开始编写实际的类和方法来使测试通过。

一开始有点难,因为你不会有智能感知帮助,而且你的代码在你实际实现生产代码之前不会构建,但是通过先编写测试,你不得不考虑你的代码如何将在你写它之前使用。

答案 2 :(得分:2)

答案 3 :(得分:1)

引导TDD的一种方法是首先编写集成测试 - 也就是说,在任何单元测试之前。此集成测试旨在证明您的应用程序在端到端的意义上按预期工作。

显然,应用程序尚未编写,因此您的初始集成测试不会检查很多东西。例如,假设您正在编写一个数据运算程序,该程序应该分析平面文件并生成摘要报告。一个简单的端到端测试将调用该程序,然后确认在预期位置生成了一个文件。该测试将失败,因为您的应用尚未执行任何操作。

然后您编写应用程序的最小版本以满足简单的集成测试。例如,应用程序将运行并将摘要报告的硬编码标题写入文件。在目前的形式中,您的应用程序有时被称为行走骨架 - 这是一些有些现实功能的最薄片。

从那时起,你可以在骨架上添加肉 - 当然,在编写每一个新功能之前编写一个测试。一旦你开始这样做,“首先测试什么”问题变得更容易处理,你的许多新测试将是面向单元的(而不是面向集成的)。