Mar*_*tin 5 tdd bdd nunit unit-testing mspec
我正在使用NUnit进行TDD.我以行为风格命名我的NUnit测试(比如给定,然后,当时).但是我现在正在使用MSpec进行所有单元测试.我还在编写测试,使用模拟等等......所以,它们仍然是单元测试.但是,我认为不需要NUnit.
我很紧张地把所有的努力都扔掉去学习NUnit.我是否应该完全放弃TDD/NUnit,考虑到BDD是TDD完成的吗?
现在您已经接受了BDD,您正在遵循"从外到内"的开发方法.
可以在programmers.stackexchange.com上找到这种开发技术的简洁定义.我引用:
"Outside-In(伦敦学校,自上而下或"模仿者TDD",正如Martin Fowler所说的那样):你事先了解交互和合作者(特别是那些顶层的人)并从那里开始(顶级),嘲笑必要的依赖关系对于每个已完成的组件,您将转移到先前模拟的协作者并在那里再次开始TDD,创建实际的实现(即使使用了,但由于抽象而不需要).请注意,从外到内的方法与YAGNI原则相符".
使用BDD时,您将以自上而下的方式开发并模拟依赖项以满足您的测试需求.一旦您的BDD测试通过,然后恢复使用TDD来实现您在BDD测试期间遇到的依赖项的具体版本(使用"由内而外"方法).
因此,您的TDD和BDD测试都很有价值,因为它们测试代码的不同方面,即BDD测试确保用户的交互是针对系统中的所有层进行测试的,而TDD测试则详细介绍了各个组件.隔离(通过嘲弄).
所以不要放弃你的NUnit测试!
为了结束我的回答,你说:
BDD是TDD完成的
正如我上面所解释的,BDD和TDD之间的主要区别在于它们涵盖的代码范围.Dan North在这里有一篇很好的文章.
NUnit 和 MSpec 基本上是测试框架。它们都可以用来编写单元、集成或验收测试。您可以在层、行为或任何您的定义的正确交集处实施测试。这两个框架都支持 BDD 样式和命名。MSpec 通过自定义委托预先完成此操作。NUnit 让它变得更具挑战性(您必须摆弄构造函数以及设置和测试方法)。
您仍然首先编写测试 (TDD),但现在您使用的测试框架直接支持上下文/规范语法和行为测试 (BDD) 与对象结构测试。
问题并不是关于 TDD 与 BDD、Arrange-Act-Assert 语法与上下文/规范语法,或者测试框架中的任何其他结构差异(每个上下文一个设置,每个规范一个断言等) ,而是你在特定框架上的技能!
我说,拥抱你的新知识!你喜欢 mspec 吗?您是否愿意让您的同事改用 mspec?您会完全忘记您的 NUnit 技能(API 或命令行运行程序)吗?
如果您继承了一些旧项目或有喜欢 NUnit 的团队成员,那么这两个框架可以在您的解决方案和构建脚本中并存,没有什么麻烦。有许多不同的方法来编写测试和报告结果并不是很好。
归档时间: |
|
查看次数: |
659 次 |
最近记录: |