SpringExtension与MockitoExtension性能对比及测试、资源问询
SpringExtension vs MockitoExtension:性能差异及参考依据
性能表现对比
- MockitoExtension快得多:它只处理Mockito相关注解(
@Mock、@InjectMocks等),完全不涉及Spring上下文的加载与初始化。不管项目规模大小,测试启动和执行都是毫秒级的,是纯单元测试的首选。 - SpringExtension速度较慢:它会启动Spring应用上下文(哪怕是精简的测试上下文),用来支持
@Autowired、@MockBean这类Spring专属注解。大型项目里光启动上下文就要好几秒甚至十几秒,更适合集成测试场景,不适合纯单元测试。
验证测试案例
自己就能快速验证性能差异:
- 编写两个测试类:一个标注
@ExtendWith(MockitoExtension.class),另一个标注@ExtendWith(SpringExtension.class)(或直接用@SpringBootTest,底层依赖的就是SpringExtension)。 - 对比启动和执行耗时:MockitoExtension的测试基本秒级启动完成;SpringExtension的测试得等上下文加载完毕才会执行,若上下文缓存失效(比如修改了配置类),还会重新加载,耗时进一步增加。
官方文档与实践指导
- Spring官方明确建议:纯单元测试优先使用MockitoExtension,仅在需要验证Spring组件整合逻辑时,再使用SpringExtension或
@SpringBootTest。 - Mockito官方文档指出,MockitoExtension是JUnit5环境下使用Mockito的标准方式,专注于快速单元测试,无需依赖Spring容器。
内容的提问来源于stack exchange,提问作者Ilio Junior
相关产品推荐
相关产品推荐

