10

我一直在阅读有关“测试感染”的人的信息,这意味着他们不仅“获得”了 TDD,而且没有它也活不下去。他们已经“改头换面”了。问题是,我怎么会这样?

4

4 回答 4

16

被“测试感染”的部分原因是您已经使用了足够多的 TDD,并且看到了足够多的成功,以至于您不想在没有它的情况下编写代码。一旦你首先经历了一个编写测试的周期,然后编码和重构,看到你的错误计数下降,你的代码因此变得更好,它不仅像 Zxaos 所说的那样成为第二天性,你很难去回到代码优先。这是正在测试感染。

于 2008-09-06T18:47:46.323 回答
16

您已经阅读了有关 TDD 的内容;阅读更多不会让你兴奋。

相反,您需要一个真正的个人成功故事。

就是这样。从核心模块中获取一些代码,这些代码不依赖于外部系统或太多其他子程序。无论例程多么复杂或简单。

然后开始针对它编写单元测试。(我假设你的语言有一个 xUnit 或类似的东西。)对测试真的很讨厌——测试每个边界情况,测试 max-int 和 min-int,测试 null,测试字符串和包含数百万个元素的列表,使用韩语和控制字符以及从右到左的阿拉伯语以及引号和反斜杠和句点以及其他如果不转义往往会破坏事物的东西来测试字符串。

你会发现......错误!起初你可能认为这些错误并不重要——你还没有遇到这些问题,你的代码可能永远不会这样做,等等等等。但我的经验是,如果你继续前进,你会感到惊讶在小问题的数量上。最终很难相信这些错误都不会导致问题。

另外,你会因为某件事做得非常非常好而获得很大的成就感。我们知道代码从来都不是完美的,而且很少没有错误,所以当我们用尽了如此多的测试让我们真正感到自信时,这真是太好了。自信是一种美好的感觉。

最后,我认为触发爱情的最后一个事件将在数周或数月后发生。也许您正在修复错误或添加功能或重构某些代码,而您所做的事情会破坏单元测试。“嗯?” 你会说,不明白为什么新的变化甚至与损坏的测试有关。然后你会找到它,并找到开悟。因为你真的不知道你在破坏代码,而测试拯救了你。

哈利路亚!

于 2008-09-06T18:49:01.793 回答
3

了解 TDD 以开始,然后开始将其集成到您的工作流程中。如果您足够多地使用这些方法,您会发现它们已成为第二天性,您将开始在该框架内构建所有开发任务。

此外,开始使用 J-Unit(或 X-Unit)框架作为您选择的语言。

于 2008-09-06T17:59:46.780 回答
1

一个字,练!做 TDD 有一些开销,克服它的方法是练习并确保你使用工具来帮助这个过程。您需要像手背一样学习工具。一旦您学习了与您正在学习的过程一起使用的工具,它就会单击,您将首先流利地编写测试以清除代码。然后你将被“测试感染”。

不久前我回答了一个类似的问题。您可能还想检查一下。我提到了一些工具并解释了学习 TDD。在这些工具中,Resharper 和选择一个好的模拟框架对于进行 TDD 至关重要。我不能强调学习这些工具以配合您使用的测试框架。

于 2008-09-06T18:51:56.123 回答