Mockito中@SpyBean和@MockBean有什么区别?

时间:2017-05-16 10:55:52

标签: mocking mockito spring-test

Mockito中的@SpyBean@MockBean注释有何区别?

我已经完成了JavaDoc,但没有找到差异。如果可能,请举例说明何时使用 MockBean 以及 SpyBean

2 个答案:

答案 0 :(得分:15)

模拟(无论我们谈论普通的对象还是bean)都只是一个空壳"。

该模拟对象与基础生产代码没有任何关系。这是一个看起来的对象,就像是X类的对象一样。但X没有做过的任何方法或字段"真的"存在于那个被嘲笑的事情上。

而间谍围绕正在测试的类的现有对象包装。含义:当你创建一个间谍时,你可以决定进入间谍的方法调用应该是"拦截" (然后你正在使用间谍,好像它会是一个模拟);或者通过"通过"对于间谍缠绕的实际物体。

有关特定于bean的示例,请参阅here。或there ......

答案 1 :(得分:4)

非常重要的一点是,您要引用的两个注释来自Spring Boot,而不是Mockito(即使它们来自的Spring lib是基于Mockito的)

混合测试框架可能会导致混淆和不准确的结果。