您是否遇到过TDD增加开发时间的情况?

时间:2010-03-25 03:15:51

标签: unit-testing language-agnostic tdd

我正在阅读TDD - How to start really thinking TDD?并且我注意到许多答案表明测试+应用程序应该比编写应用程序花费更少的时间。根据我的经验,这不是真的。我的问题是,我编写的代码中有90%具有TON操作系统调用。实际模拟这些所花费的时间比仅仅编写代码要长。有时写入测试的时间是写入实际代码的4到5倍。

我很好奇是否有其他开发人员在这种情况下。

4 个答案:

答案 0 :(得分:4)

一般来说,当人们有经验表明TDD花费时间完成一项工作需要更长的时间,这是因为他们对“完成”或“工作”的定义不正确。通常这些人都相信“代码完整”的神话。

任何人都可以更快地敲出某些代码,而不是发出某些代码和某些测试。但是,打字并不是真正的时间。如果你开始测量整个时间 - 从概念到部署 - 整个功能 - 从汤到坚果 - 需要,你将停止体验TDD“花费更长时间。”

此外,操作系统并不重要,正如Joel所暗示的那样:模拟操作系统,以便您可以发送操作系统调用的复杂使用文本,但不要打扰测试操作系统,除非你有理由要求将一个假设作为一种考验。

答案 1 :(得分:1)

TDD并非嘲笑。有时候,好的TDD会使用模拟器,但是大量的TDD可以在没有模拟的情况下完成,如果你在TDD上遇到过多的嘲弄,也许你需要去“老上学”并编写更简单的测试。

答案 2 :(得分:0)

您无需实现100%的代码覆盖率。如果一段代码是OS调用的简单包装器,那么就必须假设OS调用将执行它应该执行的操作(即,您不需要调用简单的包装器)。

现在,如果你有OS调用的复杂逻辑 ,那么模拟os调用和单元测试逻辑是有意义的。当然,如果你在操作系统调用之上有一个很好的抽象层,那就不难了。

你必须把精力集中在能够为你的维护工作带来最佳效果的作品上

答案 3 :(得分:-1)

不幸的是,这不是语言无关的。在适当的可模拟语言中(我的体验是使用Perl),嘲笑ANYTHING - 包括系统调用 - 给出一个适当的模拟库,非常便宜,快速和简单。