我对TDD世界很陌生。我有几个关于TDD的问题。
发布于 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的书在这里的列表。
希望这能有所帮助。
发布于 2009-10-20 03:40:19
发布于 2010-07-19 23:13:24
我必须先在TDD做测试吗?
是的,TDD实质上是:
vagueness -> bullet points -> tests -> code如果您正在使用其他流程,那么使用一些工具和技术是有意义的,但它并不是真正的TDD。不管这值多少钱。
嘲笑?
有4种或多或少可行的选择,不同的大师将倡导。
如果你不喜欢你的嘲笑工具,就避免#1;如果你不爱你的调试器,就避免#4。
https://stackoverflow.com/questions/1592281
复制相似问题