Java TDD

13 2025年5月 | 阅读 3 分钟

什么是 TDD?

测试驱动开发(Test-Driven Development),简称 TDD,是一种软件开发流程。正如其名,它利用测试来指导应用程序的开发,从而实现从一开始就进行简单、迭代的实现,并具有良好的测试覆盖率。

测试驱动设计。在开发的第一步是为应用程序的每一个单独功能设计和构建测试。只有当自动化测试失败时,TDD 框架才会告诉开发人员编写新代码。这可以防止代码重复。

它基于一个简单的原则:在编写新代码(开发之前)之前,先开发和修正失败的测试。我们一次只写一小段代码来通过测试,因此有助于开发人员最小化重复代码。测试只不过是必须通过测试才能满足的要求。

这是一种在应用程序实际开发之前创建和执行自动化测试的方法。因此,测试优先开发(Test First Development)也称为 TDD。

如何进行 TDD 测试?

以下说明概述了如何进行 TDD 测试。

  1. 包含一个测试。
  2. 运行所有测试,看看是否有新的测试失败。
  3. 创建一个程序。
  4. 测试你的代码并重构它。
TDD Java

TDD 周期识别

  1. 编写一个测试
  2. 让它运行。
  3. 重构是修改代码以使其更好的过程。
  4. 重复该过程。

关于 TDD 的澄清

  1. TDD 技术与“测试”或“设计”无关。
  2. TDD 并不意味着你应该“创建一些测试,然后构建一个通过这些测试的系统”。
  3. TDD 并不意味着你应该进行大量的测试。

传统测试 vs. TDD

测试驱动开发与传统测试之间的主要区别如下:

  1. TDD 基本上是一种定义需求的技术。它确保你的源代码在确认级别得到广泛的检查。
  2. 传统测试中的成功测试会发现一个或多个错误。这与 TDD 相同。当测试失败时,你就知道你取得了进展,因为你意识到了问题。
  3. TDD 确保你的系统满足为它设定的标准。它有助于建立你的系统信心。
  4. TDD 更侧重于生产代码,确保测试能够顺利运行。传统测试更侧重于测试用例设计。测试是否会揭示程序是否正被正确或不正确地执行以满足需求。
  5. TDD 允许你实现 100% 的覆盖率测试。与传统测试不同,每一行代码都会被测试。
  6. 传统测试和 TDD 的结合强调了测试系统的重要性,而不是使其完美。
  7. 在敏捷建模(AM)中,你应该“有目的地进行测试”。你应该了解你为什么测试某个东西以及它需要测试到什么程度。

命名约定

命名约定有助于组织测试,使开发人员更容易找到他们需要的东西。另一个好处是许多工具都假定遵循某些约定。目前存在许多不同的命名约定,这里列出的只是其中一部分。根据逻辑,任何命名标准都比没有好。最重要的是团队中的每个人都能理解并认同这些规范。选择“更流行”的约定有好处,可以让新加入团队的成员通过利用现有专业知识快速上手。