文章目录
- Spring Boot 测试大师课:让周五发版不再心慌
- 1、这玩意儿是干嘛的
- 2、仓库里到底有什么
- 3、测试怎么跑
- 4、踩过的坑也写下来了
- 5、适合谁看
Spring Boot 测试大师课:让周五发版不再心慌
rieckpil/testing-spring-boot-applications-masterclass 在 GitHub 上拿到 330 颗 Star。
这是德国开发者 Philip Rieckpil 做的一门 Spring Boot 测试课程配套项目,仓库里放的是完整的演示微服务代码。
1、这玩意儿是干嘛的
一句话,教 Java 开发者怎么给 Spring Boot 应用写测试。
不是那种只演示@SpringBootTest的入门教程,而是把一个真实的微服务架构拆开,教你测数据库、测消息队列、测 HTTP 调用、测前端集成。JUnit 5、Mockito、Testcontainers、WireMock、Selenide、Awaitility、LocalStack,这套工具链在课程里全部用到了。
README 里说得很直接:周五下午要发版,胃都紧了,怕半夜被电话叫起来修 bug。这就是测试没底气留下的债。
2、仓库里到底有什么
一个完整可跑的微服务项目,技术栈是这样的:
- Keycloak 做身份认证,走 OpenID Connect / OAuth 2.0
- Amazon SQS 演示异步消息处理的测试
- PostgreSQL 当关系型数据库
- 前端是 React + TypeScript 的单页应用
- 后端是 Spring Boot + Java 21
依赖一个远程 REST API,用来演示怎么测对外部 HTTP 服务的调用。
./mvnw spring-boot:run一条命令就能把整条链路在本地 Docker 上跑起来,关键页面在localhost:8080,Keycloak 管理后台在8888。两个测试账号:duke / dukeduke,mike / mikemike。
3、测试怎么跑
仓库给了三组命令。
跑单元测试,用 Maven Surefire:./mvnw test。
跑集成和 Web 测试,用 Failsafe:先docker ps确认没有冲突容器,再./mvnw package -DskipTest编译并构建前端到target/classes/public,最后./mvnw failsafe:integration-test failsafe:verify。
全跑一遍:./mvnw verify。
Windows 用户把./mvnw换成mvnw.cmd。
4、踩过的坑也写下来了
README 里专门留了 Troubleshooting 章节。
ARM64 机器(比如 MacBook Pro M1)跑不起来,对应 issue #31 给了解法。前端构建想跳过,加参数-Dskip.installnodenpm -Dskip.npm。Keycloak 容器启动时挂掉,给出了精简版docker-compose.yml,去掉自动导入配置那段,手动配。
最实用的是企业代理网络那一段。很多公司内网开发的同学都有这个痛:Maven 能跑了,npm 又卡,LocalStack 的 localhost 调用还被代理拦截。仓库里给了三份配置,~/.m2/settings.xml配 Maven 代理,npm config set配 npm 代理,LocalStack 那边加 JVM 参数-Dhttp.nonProxyHosts="localhost|127.0.0.1|::1|*.local"让 AWS SDK 绕过代理。
5、适合谁看
- 写 Spring Boot 的 Java 工程师,发版前总是心里没底
- 想从单元测试进阶到集成测试、端到端测试的人
- 团队里在搭测试体系、需要一份参考实现的技术负责人
- 准备上 Java 21 和 Spring Boot 4,想顺手把测试体系理一理的团队
课程本身是付费的,仓库代码免费开源。只看代码也能学到不少东西,比如 Testcontainers 配 LocalStack 测 SQS 的写法、WireMock 模拟远程 REST API 的姿势,都是能直接抄走的模板。
LocalStack 测 SQS 的写法、WireMock 模拟远程 REST API 的姿势,都是能直接抄走的模板。