Java TDD
什么是测试驱动开发
测试驱动开发(Test-Driven Development,简称TDD)是一种软件开发方法,它依赖于测试和开发的短周期重复:
- 先编写一个(失败的)测试用例
- 然后实现代码使测试通过
- 最后对代码进行重构优化
TDD的理念是"测试先行",通过先确定预期行为,再实现功能代码,让开发过程更加聚焦于需求和质量。
TDD的核心原则:"红-绿-重构"循环
TDD遵循一个简单但强大的循环,通常称为"红-绿-重构"循环:
- 红色阶段:编写一个会失败的测试
- 绿色阶段:编写最简单的代码使测试通过
- 重构阶段:改进代码,保持测试通过
提示
记住这个循环的口诀:"先红后绿再重构"(Red-Green-Refactor)
Java TDD入门:准备工作
在Java中实践TDD,我们需要一些测试工具。最常用的是JUnit :
<!-- Maven依赖 -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.8.2</version>
<scope>test</scope>
</dependency>
一个简单的TDD示例
让我们通过一个简单的例子来演示TDD流程。假设我们需要开发一个计算器类,它能够执行基本的算术运算。
步骤1:编写失败的测试
首先,我们编写一个测试来验证加法功能:
// src/test/java/com/example/CalculatorTest.java
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class CalculatorTest {
@Test
public void testAddition() {
Calculator calculator = new Calculator();
assertEquals(5, calculator.add(2, 3), "2 + 3 should equal 5");
}
}
当我们运行这个测试时,它会失败,因为我们还没有实现Calculator
类。
步骤2:编写最简单的实现代码
接下来,我们编写最简单的代码使测试通过:
// src/main/java/com/example/Calculator.java
public class Calculator {
public int add(int a, int b) {
return a + b;
}
}
现在,当我们运行测试时,它应该通过了!