单元测试自动化的流程

1. 环境与技术栈准备

在开始自动化之前,先把工具配齐(企业最标准组合):

  • 测试框架:JUnit 5
  • 模拟依赖:Mockito
  • 覆盖率统计:JaCoCo
  • 构建工具:Maven / Gradle
  • 版本管理:Git
  • 持续集成:Jenkins / GitLab CI / GitHub Actions

2. 编写业务代码

开发人员完成业务逻辑,例如:

  • Service 层逻辑
  • Controller 接口
  • Util 工具类
  • 复杂算法、校验逻辑

这些代码是被测试对象


3. 编写单元测试用例

这是自动化的核心步骤,不是手动点,而是用代码写测试。

3.1 构建测试类

  • 测试类放在 src/test/java
  • 类名通常为 XxxServiceTestXxxUtilTest

3.2 注入 / 模拟依赖

  • 对数据库、Redis、第三方接口,不真调用
  • 使用 Mockito 模拟返回结果
  • 只测试本类逻辑,隔离外部依赖

3.3 设计测试场景

覆盖:

  • 正常流程
  • 边界值
  • 异常情况
  • 空参数、非法参数

3.4 编写断言

判断结果是否符合预期:

  • 返回值是否正确
  • 异常是否抛出
  • 方法是否被调用
  • 数据库操作次数是否符合

4. 本地执行单元测试(开发自测)

开发在 IDE 中执行:

  • 运行单个测试方法
  • 运行整个测试类
  • 运行所有测试

执行结果:

  • ✅ 绿色:通过
  • ❌ 红色:失败(逻辑错误 / 断言不通过)

本地必须全部通过才能提交代码。


5. 代码提交到 Git 仓库

开发完成后:

  • 提交业务代码
  • 提交测试代码
  • Push 到远程分支(develop/feature)

6. CI 平台自动触发构建

当代码 Push 后,CI 工具自动拉取代码,开始自动化流程:

6.1 拉取代码

Git pull 最新代码

6.2 编译项目

Maven/Gradle 执行:

plaintext

复制代码
mvn compile

6.3 自动执行所有单元测试

执行:

plaintext

复制代码
mvn test

这一步会自动运行所有测试用例,无需人工干预。

6.4 任何一个测试失败 → 构建直接失败

CI 会立即中断流程,并通知开发:

  • 测试失败
  • 代码不合规
  • 禁止进入下一步打包、部署

7. 生成测试覆盖率报告(JaCoCo)

测试通过后自动生成:

  • 行覆盖率
  • 方法覆盖率
  • 类覆盖率
  • 分支覆盖率

企业通常设置门槛:

  • 行覆盖率 ≥ 70% / 80%
  • 核心模块必须 90%+不达标 → 构建失败。

8. 质量门禁检查

CI 配置规则:

  • 测试必须 100% 通过
  • 覆盖率必须达标
  • 禁止低质量代码合并到主干

通过后才能进入下一步。


9. 打包、构建镜像(可选)

plaintext

复制代码
mvn package -DskipTests=false

(也可以再次运行测试确保稳定)


10. 自动部署 / 发布到测试环境(可选)

通过所有关卡后:

  • 自动部署到测试环境
  • 供联调、接口测试使用

11. 持续回归(每次提交都自动跑)

以后任何代码修改、合并:

  • CI 自动重新跑全部单元测试
  • 自动检查覆盖率
  • 自动拦截问题代码

实现真正的自动化守护


整个流程总结(最简版)

  1. 写业务代码
  2. 写单元测试代码
  3. 本地测试通过
  4. 提交 Git
  5. CI 自动拉取代码
  6. CI 自动编译
  7. CI 自动运行所有测试
  8. 自动生成覆盖率报告
  9. 质量门禁校验
  10. 测试失败 → 阻断上线
  11. 测试通过 → 自动打包部署

一句话概括

单元测试自动化 = 用代码写测试 + 工具自动跑测试 + CI 自动把关质量,全程不用人管。

相关推荐
雷工笔记13 分钟前
MES 系统 设备保养管理模块详细设计方案
运维·数据库
晚风_END2 小时前
Linux|操作系统|zfs文件系统的使用详解
linux·运维·服务器·数据库·postgresql·性能优化·宽度优先
科研前沿8 小时前
镜像视界 CameraGraph™+多智能体:构建自感知自决策的全域空间认知网络技术方案
大数据·运维·人工智能·数码相机·计算机视觉
暴力求解8 小时前
Linux---线程基础
linux·运维·服务器
晚风_END8 小时前
Linux|操作系统|最新版openzfs编译记录
linux·运维·服务器·数据库·spring·中间件·个人开发
咖喱o9 小时前
QinQ/VLAN Stacking
linux·运维·服务器·网络
sduwcgg10 小时前
IQ-Learn 在 RTX 3090 服务器上的环境配置与踩坑记录
运维·服务器
marsh020611 小时前
43 openclaw熔断与降级:保障系统在异常情况下的可用性
java·运维·网络·ai·编程·技术
摇滚侠11 小时前
Docker 如何查询挂载的目录
运维·docker·容器
汽车仪器仪表相关领域11 小时前
Kvaser Memorator Professional 5xHS CB:五通道CAN FD裸板记录仪,赋能多总线系统集成测试的旗舰级核心装备
大数据·网络·人工智能·单元测试·汽车·集成测试