一、单元测试的技术组成(核心视角)

一个完整的单元测试 = 测试运行器 + Mock 机制 + 断言机制

角色

作用

典型代表

测试框架(Runner)

发现、执行测试用例

JUnit 4 / JUnit 5 / TestNG

断言框架(Assertions)

判断“对不对”

JUnit Assert / AssertJ / Hamcrest / Truth / TestNG

Mock 框架

构造依赖、隔离被测对象

Mockito / EasyMock / PowerMock

JUnit 本质是 测试运行平台,只是顺带提供了断言能力。

二、为什么需要这种细分?

断言框架只关心一件事:结果是否正确

assertEquals(3, result);
assertThat(result).isEqualTo(3);

职责:

  • 比较实际值和期望值

  • 提供清晰的错误信息

  • 不参与对象创建、依赖管理

这是“验证层”

Mock 框架只关心一件事:环境是否可控

UserService userService = mock(UserService.class);
when(userService.find(1)).thenReturn(new User("Tom"));

职责:

  • 替换真实依赖

  • 控制返回值

  • 验证调用行为

这是“准备层”

三、现实中的组合方式(非常重要)

最主流组合(Spring Boot 标配)

JUnit 5  (跑测试)
+ Mockito(造依赖)
+ AssertJ(写断言)

老一代经典组合

JUnit 4
+ Mockito
+ Hamcrest

Google / Android

JUnit 4/5
+ Mockito
+ Truth

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐