Spring (@SpyBean) 与 Mockito(@Spy)

LiT*_*Tle 7 java spring unit-testing spy kotlin

@SpyBeanfromorg.springframework.boot.test.mock.mockito.SpyBean@Spyfrom和有什么不一样org.mockito.Spy

使用@SpyBean而不是@Spy使我的测试失败。

cse*_*nga 9

@Spy 医生说:

用@Spy 注释的字段可以在声明点显式初始化。或者,如果您不提供实例,Mockito 将尝试查找零参数构造函数(甚至是私有的)并为您创建一个实例。

@SpyBean 医生说:

可用于将 Mockito 间谍应用到 Spring ApplicationContext 的注释。

相同类型上下文中的所有 bean 都将被 spy 包裹。如果没有定义现有 bean,则会添加一个新 bean。

所以主要的区别是@SpyBeanSpring Boot 特定的注释,但它@Spy是 Mockito 本身的一部分。@SpyBean@Spy基本上一样,但@SpyBean可以解决Spring特定的依赖关系,例如@Autowired@Spy只能创建带有空构造函数的对象。