Testcontainers隔离依赖服务的实践

发表评论 1045 浏览量
目录:

Testcontainers隔离依赖服务的实践

2025年3月记录,分类「持续集成」。这是一篇偏实战的记录,保留了当时的判断过程和后续沉淀。

为什么隔离

接口测试依赖真实 MySQL、Redis、MQ 时,Testcontainers 可以让每次测试拥有独立依赖,减少共享环境带来的偶现失败。

对测试来说,最后要落到可复现、可验证、可交接,文章也是按这个思路写的。

用在哪

  • 为集成测试启动独立数据库和缓存容器。
  • 测试开始前执行 schema 和基础数据初始化。
  • 测试结束自动销毁容器,避免污染环境。
with MySqlContainer('mysql:8.0') as mysql:
    url = mysql.get_connection_url()
    run_integration_tests(url)

数据准备

  • 本地和 CI 行为一致。
  • 容器启动失败能明确报错。
  • 执行时间在团队可接受范围内。

落到团队协作里,重点是让新人能照着补用例,开发也能看懂为什么要改。

成本

依赖隔离会增加一点耗时,但能换来更可信的集成测试。这个记录后续还可以继续补真实缺陷样本,让它从笔记变成团队检查清单。