Unit testing 我们是如何拥有单元测试哲学的?

Unit testing 我们是如何拥有单元测试哲学的?,unit-testing,tdd,Unit Testing,Tdd,你好,我的家人 毫无疑问,单元测试在软件开发中非常重要。但我认为实践和哲学才是第一位的。大多数开发人员希望使用这种理念,但他们无法在项目中执行,因为他们不习惯测试驱动的开发。现在我要问的是那些遵循这种哲学的人。根据您的经验,良好测试的特性是什么?以及你如何让它成为你生活的一部分 好日子。好测试的一些特点: 它的执行不依赖于上下文(或状态)——即它是单独运行还是与其他测试一起运行 它只测试一个功能单元 它涵盖了被测试功能单元的所有可能场景 讨论的措辞再恰当不过了 根据良好测试的思想,它是一个

你好,我的家人

毫无疑问,单元测试在软件开发中非常重要。但我认为实践和哲学才是第一位的。大多数开发人员希望使用这种理念,但他们无法在项目中执行,因为他们不习惯测试驱动的开发。现在我要问的是那些遵循这种哲学的人。根据您的经验,良好测试的特性是什么?以及你如何让它成为你生活的一部分


好日子。

好测试的一些特点:

  • 它的执行不依赖于上下文(或状态)——即它是单独运行还是与其他测试一起运行
  • 它只测试一个功能单元
  • 它涵盖了被测试功能单元的所有可能场景

    • 讨论的措辞再恰当不过了

      根据良好测试的思想,它是一个捕获缺陷的测试:)。但是TDD不仅仅是捕获缺陷,它更多的是关于开发和连续性。

      这给单元测试带来了启示

      • 如果你写代码,就写测试
      • 不要拘泥于单元测试教条
      • 拥抱单元测试业力
      • 将代码和测试视为一体
      • 测试比单元更重要
      • 测试的最佳时间是代码更新时
      • 测试不会浪费
      • 今天不完美的考试总比将来某一天完美的考试好
      • 丑陋的测试总比没有好
      • 有时,测试证明了方法的正确性
      • 只有傻瓜才不用工具
      • 好的测试失败了

      我一直认为,罗伯特·C·马丁的这篇文章最能概括TDD的规则和理念:

      在这篇文章中,他总结了TDD的以下三条规则:

      • 您不允许编写任何生产代码,除非它是为了 未通过单元测试
      • 不允许您编写任何超过足够数量的单元测试 失败;编译失败的原因是 失败
      • 不允许您编写比当前更多的生产代码 足以通过失败的一个 单元测试
      有一条隐含的第四条规则:

      • 您应该在测试通过时重构代码

      虽然有许多更详细的示例、文章和书籍,但我认为这些规则很好地总结了TDD。

      不需要知道TDD来进行单元测试:)这应该是社区wiki