test-driven-spring-boot:用 TDD 写出来的 Spring Boot 示例
文章目录
test-driven-spring-boot:用 TDD 写出来的 Spring Boot 示例
这个项目在 GitHub 上拿到 112 Star 了。
xpinjection 开源的 test-driven-spring-boot 是一个 Spring Boot 云原生应用示例,全程按 TDD 风格编写,用来演示如何在 Spring Boot 项目里落测试驱动开发。仓库不大,但拿到 CI 上的 Maven 构建徽章一直在跑。

1、 项目解决什么问题
写 Spring Boot 的人多,能把 TDD 真正用起来的少。多数项目靠补测试凑覆盖率,先写实现再补用例,测出的东西更像是事后背书。
这个仓库把顺序倒过来。它给人演示一套从需求到用例再到实现的写法:测试先跑红,生产代码补到能过,再回头重构。整个工程结构按这套节奏来。
2、 本地怎么跑
入口是 LocalLibraryApplication 这个类。作者的说明很直接:跑它就够了。需要的依赖通过 Docker 容器自动拉起,应用连上就能工作。
不用手动拉数据库、不用改配置文件,本地环境一行命令的事。

3、 Actuator 端点怎么开
Spring Boot Actuator 的管理端点默认不暴露。要激活,需要打开 admin profile,并把账号密码通过系统属性传进去:
-Dspring.security.user.name=admin
-Dspring.security.user.password=xpinjection
-Dspring.profiles.active=dev,admin
没有把账号写死在代码里,而是依赖外部配置传入。这种做法比 property 文件里塞默认值干净些,部署到不同环境直接换系统属性即可。
4、 Consumer-Driven Contracts 怎么接
项目用 Pact 描述并管理 REST API 契约。
仓库里的 /pact/docker-compose.yaml 能起一个 Pact Broker 加 PostgreSQL 依赖。这个 broker 实例不挂卷,数据重启就清,适合本地验证用。
测试阶段要不要跑 Pact,由 pactbroker.enabled 系统属性控制。验证结果发不发布到 broker,看 pact.verifier.publishResults。
pact.provider.version 和 pact.provider.branch 用来传当前应用版本号和 git 分支,broker 里靠它们跟踪契约的演变过程。
5、 Testcontainers 不想跑怎么办
有些场景本地没 Docker,或者只想快速过一遍构建。作者留了一个开关,把 testcontainers.enabled 设为 false 就能跳过依赖 Testcontainers 的测试:
./mvnw verify -Dtestcontainers.enabled=false
6、 适合什么人看
- 想在 Spring Boot 项目里真正落 TDD,但不知道怎么破题的开发者
- 在搭契约测试流程、需要一份能跑的 Pact 集成样例的人
- 给团队做培训、要找一个干净小工程当样例讲清楚的人
在搭契约测试流程、需要一份能跑的 Pact 集成样例的人
- 给团队做培训、要找一个干净小工程当样例讲清楚的人
更多推荐

所有评论(0)