首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TDD新手推荐的东西

TDD新手推荐的东西
EN

Stack Overflow用户
提问于 2009-10-20 03:24:54
回答 7查看 1.3K关注 0票数 8

我对TDD世界很陌生。我有几个关于TDD的问题。

  1. 我必须先在TDD做测试吗?我听说TDD与测试无关。是关于设计的。我同意先做测试是很好的,但我想知道的是,如果我们遵循最后测试方法,那么TDD仍然存在吗?
  2. 我们更喜欢使用BDD而不是TDD吗?我过去常常先列出我的任务的规范,然后尝试根据我的规范编写测试用例。这是错误的做法吗?你们更喜欢在开发中使用BDD还是TDD?
  3. 嘲笑?我团队中的一些人过去常说他们在练习TDD。但他们从来不遵循测试第一的方法。他们从不嘲笑这些数据。我们必须模拟TDD中的数据吗?
  4. “使用模拟库”Vs“手动创建带有数据的模拟类”。您喜欢使用模拟库还是使用一些模拟数据创建模拟类?
  5. 是否有TDD或BDD的推荐书?我读了肯特贝克的经典测试驱动开发-通过例子。我发现这本书是在TDD的早期阶段出版的,所以这本书中的一些东西并不是有点过时。
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-10-20 03:44:05

1)。我必须先在TDD做测试吗?我听说TDD与测试无关。是关于设计的。我同意先做测试是很好的,但我想知道的是,如果我们遵循最后测试方法,那么TDD仍然存在吗?

是!严格地说,TDD是测试驱动的开发。因此,开发是由测试驱动的。所以你先测试,然后开发程序通过所有的测试。

2)。我们更喜欢使用BDD而不是TDD吗?我过去常常先列出我的任务的规范,然后尝试根据我的规范编写测试用例。这是错误的做法吗?你们更喜欢在开发中使用BDD还是TDD?

我觉得你应该平衡他们。使用其他技术,尽可能最好地提供总体设计(做风险管理,以找到你应该花在设计上的适当时间)(找到一篇关于"RUP本质“的论文。它给出了一个很好的平衡敏捷和不那么敏捷的想法)。确定最关键的部分,然后创建测试并开发以通过测试。

3).Mocking?我团队中的一些人过去常说他们在练习TDD。但他们从来不遵循测试第一的方法。他们从不嘲笑这些数据。我们必须模拟TDD中的数据吗?

测试第一和嘲笑不是一回事。当其他部分(此代码所依赖的部分)不存在时,模拟允许代码更易于测试,以及可测试性。因此,如果不存在这种依赖关系( if !!),那么您就不能嘲笑它们了。(更多细节请阅读关于Seam点的"有效地使用遗产代码“)。

4)。“使用模拟库”Vs“手动创建带有数据的模拟类”。您喜欢使用模拟库还是使用一些模拟数据创建模拟类?

我认为这就像使用别人的图书馆或者创造你自己一样。完全取决于情况和许多因素。例如,如果您的项目很大,并且您可以找到适当的模拟库,请使用它。

5)。是否有TDD或BDD的推荐书?我读了肯特贝克的经典测试驱动开发-通过例子。我发现这本书是在TDD的早期阶段出版的,所以这本书中的一些东西并不是有点过时。

关于TDD的书在这里的列表。

希望这能有所帮助。

票数 3
EN

Stack Overflow用户

发布于 2009-10-20 03:40:19

  1. 是的,它是关于设计的,但是这种设计方法确实涉及到首先编写测试。人们严格遵循这条规则,但我认识的大多数人都倾向于相信遵循这条规则更好。
  2. BDD被描述为TDD做得很好。差别很小。从本质上讲,BDD只是将关于测试的观点作为更明确的规范。
  3. 对于嘲弄的有用性,有很多不同意见。我个人更喜欢测试接口,并且避免将期望放在模拟中。尽管如此,隔离测试仍然是一个好主意,原因多种多样,其中最重要的是测试速度。没有什么比重构一段仍然完全符合上一个接口的代码更烦人的了,它有一个完全工作的最终结果,但是所有的测试都失败了,因为模拟上的期望不再满足。错误的模拟使用会导致测试实现细节,而不是确保所执行的工作是正确的。
  4. 参见#3。我更喜欢只使用没有期望的存根,或者使用集成测试。
  5. 测试驱动开发: Dave的实用指南。强烈推荐。
票数 2
EN

Stack Overflow用户

发布于 2010-07-19 23:13:24

我必须先在TDD做测试吗?

是的,TDD实质上是:

代码语言:javascript
复制
vagueness -> bullet points -> tests -> code

如果您正在使用其他流程,那么使用一些工具和技术是有意义的,但它并不是真正的TDD。不管这值多少钱。

嘲笑?

有4种或多或少可行的选择,不同的大师将倡导。

  1. 模拟到零:模拟每个依赖项,这样每个单元(例如java类)都可以有效地进行隔离测试。
  2. 模拟到线性:只使用模拟循环依赖项,这样就有一个线性的测试顺序,这样每个单元都只能使用测试的依赖项进行测试。
  3. 模拟速度:只有模拟慢,异步或其他有问题的接口.
  4. 零嘲讽:只要测试一些东西,就可以使用调试器来找出如果事情坏了会发生什么。

如果你不喜欢你的嘲笑工具,就避免#1;如果你不爱你的调试器,就避免#4。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1592281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档