2013-03-17 86 views
0

测试驱动开发是否需要单元测试?我经常发现没有单元测试没有TDD的观点。我无法通过Wiki或我可以访问的书籍等受尊重的来源进行确认。TDD是否需要单元测试?

维基百科:

测试驱动开发(TDD)是一种软件开发过程 依赖于在非常短的开发周期的重复:第一 开发者编写的(最初失败的)的自动测试情况 定义所需的改进或新功能(...)

如果它意味着创建集成测试不需要单元测试是不够遵循TDD?

+5

少担心进程的名称,并详细了解所涉及的技术。单元测试和集成测试都是好东西,不管总体范例是什么。 – 2013-03-17 00:11:22

+0

有时候一个人不得不担心 – 2013-03-17 00:14:42

+0

啊,也许我误解了你的问题(它似乎是“我可以避免单元测试,仍然称它为TDD?”) – 2013-03-17 00:18:51

回答

3

如果集成测试有意义并提供有用(快速)反馈,那么当然。这不是关于测试范例的纯粹性,而是关于快速反馈循环和正在编写的代码的验证。只要你有这个,你有TDD。

请注意,在这种情况下,我不会将维基百科引用为受尊重的资源。当然是参考资料的来源。但是,如果您有关于TDD的问题,我怀疑这个主题上有比Kent Beck's book更受推崇的资源。

+0

感谢您的有用评论。关于源代码,我还研究了我可以访问的书籍和本研究http://research.microsoft.com/en-us/groups/ese/nagappan_tdd.pdf – 2013-03-17 00:13:12

+0

ps。我发现令人困惑的原因之一是“TDD的三个定律”。他们每个人都提到“单元测试”。 – 2013-03-17 00:38:31

+1

@LukaszKujawa:比法律书更注重法律精神。 (事实上​​,正如“三部法律”所表明的虚构一样,法律是可以解释的。)测试应该是有意义的,应该准确地验证代码。他们应该是孤立的和可重复的。他们应该没有副作用。如果这一切都可以通过集成测试来完成,那就太好了。如果可以通过UI脚本测试来完成,那很好。只要价值在那里。 – David 2013-03-17 01:50:02

-1

当你开发TDD时,据说最好的测试是原子性的和孤立的。这意味着他们正在测试非常具体的东西,而不依赖于项目中的其他东西。 UnitTest正是用于此目的,所以我想没有单元测试就没有TDD。

使用TDD进行开发的想法是为您自己和团队确信您的所有代码仍然按照预期工作。为了达到这个目的,你需要一个集成的服务器,在你整合所有东西的时候,测试必须运行。如果你使用框架进行单元测试,这很容易实现。

我真的很推荐这本书,它是短,易于阅读,并真正体现出你的方式:

Test Driven: Practical TDD and Acceptance TDD for Java Developers