概述
TDD(Test-driven development) 测试驱动开发,简单点说就是编写测试,再编写代码。这是首要一条,不可动摇的一条,先写代码后写测试的都是假TDD。
测试驱动开发可以分为三个周期,周而复始,红灯-绿灯-重构。由以下几个步骤构成:
- 编写测试
- 运行所有测试
- 编写代码
- 运行所有测试
- 重构
- 运行所有测试
一开始编写测试,肯定通不过,红灯状态,进行代码编写,然后运行测试,测试通不过,测试通过,即变成绿灯。
测试不通过,或者需要重构代码,再次运行所有测试代码…
接下来通过一个简单的,一个RESTful请求的Spring boot web项目,演示和说明TDD的过程。
这个功能大致是这样的,一个simple元素有id和desc两个属性
用户发送GET请求http接口 http://localhost:8080/simples 返回所有的simple元素的json数组
1 技术工具
JDK8+
Spring Boot 2.1+
maven or Gradle
JPA
JUnit 5+
Mockito
Hamcrest
一个常见的RESTful请求处理的MVC架构:
用户访问http url
通过Controller层接口
Controller层调用Service的实现
Service接口通过Repsoitory层访问数据库,并最终返回数据给用户
2 构建Spring Boot工程
构建一个Spring Boot Maven工程,并添加所需的依赖
参考依赖如下
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.3.7.RELEASE</spring-boot.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency&