【问题标题】:Does TDD require Unit Tests? [closed]TDD 是否需要单元测试? [关闭]
【发布时间】:2013-03-17 00:06:54
【问题描述】:

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

来自维基百科:

测试驱动开发 (TDD) 是一种软件开发过程, 依赖于非常短的开发周期的重复:首先 开发人员编写了一个(最初失败的)自动化测试用例, 定义期望的改进或新功能(...)

如果不需要单元测试,是否意味着创建集成测试就足以遵循 TDD?

【问题讨论】:

  • 不用担心进程的名称,而更多地关注所涉及的技术。不管整体范式叫什么,单元测试和集成测试都是好东西。
  • 有时不得不同时担心两者
  • 啊,也许我误解了你的问题(似乎是“我可以避免单元测试并仍然称它为 TDD 吗?”);)
  • 看起来你有。我正在收集有关 TDD 的信息。这仍然是一个非常令人困惑的主题。

标签: c# java php unit-testing tdd


【解决方案1】:

如果集成测试有意义并提供有用(且快速)的反馈,那么可以肯定。这不是关于测试范式的纯度,而是关于快速反馈循环和正在编写的代码的验证。只要你有它,你就有了 TDD。

顺便说一句,在这种情况下,我不会将 Wikipedia 称为受人尊敬的资源。参考资料的来源,当然。但是,如果您对 TDD 有疑问,我怀疑在这个主题上还有比 Kent Beck's book 更受尊重的资源。

【讨论】:

  • 感谢您的有用评论。关于来源,我还查看了我可以访问的书籍和这项研究research.microsoft.com/en-us/groups/ese/nagappan_tdd.pdf
  • ps。我发现令人困惑的原因之一是“TDD 的三定律”。他们每个人都提到“单元测试”。
  • @LukaszKujawa:更多地关注法律精神而不是法律条文。 (事实上​​,正如“三定律”所引用的小说所证明的那样,定律是可以解释的。)测试应该是有意义的,并且应该准确地验证代码。它们应该是孤立的和可重复的。它们应该没有副作用。如果这一切都可以通过集成测试来完成,那就太好了。如果可以通过 UI 脚本测试来完成,那就太好了。只要价值存在。
【解决方案2】:

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

使用 TDD 进行开发的想法是让您自己和团队确信您的所有代码仍能按预期工作。为了实现这一点,您将需要一个集成服务器,每次集成所有内容时都必须运行测试。如果您使用框架进行单元测试,这很容易实现。

我真的很推荐这本书,它简短、易读,并且真的为你指明了方向:

Test Driven: Practical TDD and Acceptance TDD for Java Developers

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2013-02-24
    • 2010-12-09
    • 2021-07-13
    相关资源
    最近更新 更多