问题描述
org.springframework.boot.test.mock.mockito.SpyBean
中的 @SpyBean
和 @Spy
之间有什么区别?代码>org.mockito.Spy?
What is the difference between @SpyBean
from org.springframework.boot.test.mock.mockito.SpyBean
and @Spy
from org.mockito.Spy
?
使用 @SpyBean
而不是 @Spy
使我的 测试失败.
Using @SpyBean
instead of @Spy
makes my tests fail.
推荐答案
@Spy
doc 说:
使用@Spy 注释的字段可以在以下位置显式初始化声明点.或者,如果您不提供实例Mockito 将尝试找到零参数构造函数(甚至是私有的)和为您创建一个实例.
@SpyBean
doc 说:
可用于将 Mockito 间谍应用到 Spring 的注解应用上下文.
同一类型上下文中的所有bean都将用间谍.如果没有定义现有 bean,则会添加一个新 bean.
All beans in the context of the same type will be wrapped with the spy. If no existing bean is defined a new one will be added.
所以主要区别在于 @SpyBean
是 Spring Boot 特定的注释,而 @Spy
是 Mockito 本身的一部分.@SpyBean
和 @Spy
基本相同,但 @SpyBean
可以解析 Spring 特定的依赖关系,例如@Autowired
, @Spy
只能创建构造函数为空的对象.
So the main difference is @SpyBean
is a Spring Boot specific annotation but @Spy
is part of Mockito itself. @SpyBean
and @Spy
basically do the same, but @SpyBean
can resolve the Spring specific dependencies, e.g. @Autowired
, @Spy
can only create object with empty constructor.
这篇关于Spring (@SpyBean) 与 Mockito(@Spy)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!