.net - TDD 入门?

标签 .net tdd code-coverage mocking

我们正处于尝试实现 TDD 的初始阶段。我演示了 Visual Studio Team System 代码覆盖率/TDD 工具,团队对这些可能性感到兴奋。目前我们使用 Devpartner 进行代码覆盖,但我们希望消除它,因为它很昂贵。我们在 TDD 方面的经验非常有限,并希望确保我们不会走错方向。目前我们正在使用 SourceSafe 进行源代码控制,但将在大约一年后迁移到 Team System。

我可以告诉您,我们的应用程序非常以数据为中心。我们有大约 900 个表、6000 个存储过程和大约 45GB 的数据。我们有很多基于用户数据和系统中不同费率的计算。此外,我们的很多代码都是基于时间的(计算对当前日期的兴趣)。其中一些计算非常复杂且非常密集(只有少数人知道其中一些的细节)。

我们希望实现 TDD 来解决 QA 问题。许多开发人员被迫在他们不熟悉的领域修复错误并最终破坏某些东西。还有一些领域开发人员几乎不敢接触,因为代码被系统中的所有东西使用。我们想减轻这个问题。

恐怕因为我们的代码是如此以数据为中心,以至于实现 TDD 可能比大多数系统更复杂一些。我正在尝试制定一个可以提交给管理层的游戏计划,但我希望不会陷入一些 TDD 初学者错误中。此外,如果 Team System 中的工具/设施使 TDD 更加完整,那会很好,但我们不想等待 Team System 开始。

我们问的第一个问题是我们应该从visual studio中的工具开始吗?我读过有人提示 Visual Studio 中的内在工具(需要创建一个单独的项目来创建您的测试),但 Visual Studio 中的工具的一件事是它们是免费的,并且集成很好。如果我们决定使用 XUnit、MBUnit 或 NUnit 之类的东西走另一条路,那么我们很可能会有一些可能会很大的成本:

1)如果我们想要IDE集成(没提到我们的大部分代码是VB.Net)
---TestDriven.Net 或 Resharper 或 ?????

2)如果我们想要代码覆盖率
---NCover(其功能似乎相当昂贵)

此外,我还看到了在 Visual Studio 2010 中演示的一些非常酷的功能。比如进行输入测试的能力(在表单上输入的数据)或记录用户所做的事情,然后将其输入到您的单元测试中以重现问题。

另外,虽然我还不太了解模拟对象的概念,但我知道很多人都觉得这是必须的。问题是所有模拟框架都可以插入 Visual Studio 的 TDD (MSTEST) 版本吗?

我已经建议管理层,我们可能应该只添加回归测试(新开发或发现的错误),而不是尝试检查我们所有的代码并进行单元测试。这将是一个太大的项目。

无论如何,我会感谢任何人的帮助。

最佳答案

首先要做的是得到这本书:

Working Effectively with Legacy Code

对于这么大的项目,阅读它并内化它。数据驱动应用程序上的 TDD 已经够难了。在传统上,您需要一些认真的计划和努力。在我看来值得,但它仍然是一个很大的曲线。

关于.net - TDD 入门?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1195230/

相关文章:

c# - .NET 反序列化后 XML 中的对象位置(行、列)

testing - 嵌入式 C 项目模块级测试的测试用例和测试自动化

c# - 检测 'dead' 测试和硬编码数据与受约束的非确定性

swift - 如何使用 UI 单元测试获取嵌入式框架的 Xcode 8 代码覆盖率

python - Python 中的分布式单元测试和代码覆盖率

c# - DEBUG 与 RELEASE 和分发程序集

.net - 在 Mono 中获取 .NET 应用程序的已编译 asm

c# - Automapper项目使用

Activity 有动画时的Android单元测试

c# - 如何使用 Jenkins 计算 NCover 的代码覆盖率?