使用springrunner和@mock

dzjeubhm  于 2021-07-16  发布在  Java
关注(0)|答案(2)|浏览(517)

我已经读到,当使用@mock时,它应该与@runwith(mockitojunitrunner.class)一起使用,而对于@mockbean,它与@runwith(springrunner.class)一起使用。
但是,对于@mock,我发现mockitojunitrunner和springrunner都可以互换使用。我很困惑为什么springrunner也在这种情况下工作?

@RunWith(MockitoJUnitRunner.class) // also work when @RunWith(SpringRunner.class) is used
public class testService {
  @InjectMocks
  private ServiceA serviceA;

  @Mock
  private DependencyA dependencyA;
}
0wi1tuuw

0wi1tuuw1#

通常,如果您使用的是springboot,并且需要从springapplicationcontext模拟bean,那么您将使用springboot的@mockbean支持,而不是简单的@mock。
如果bean注入是通过autowired注解进行的,那么@mock将不起作用。

snvhrwxg

snvhrwxg2#

在谈到 @MockBean 该类包含在spring引导测试库中。它允许在spring应用程序上下文中添加mockito mock。
基本上 @MockBean 是一个 @Mock 和一个 @InjectMocks . 所以,您也可以将@mock与springrunner一起使用,但当然不推荐使用,因为它更重。
一般来说,您会使用mockito进行轻量级单元测试,而 @MockBean 当您需要模拟的servlet环境时,比如在组件测试或混合集成测试中。
@mock、@mockbean和mockito.mock()之间的区别

相关问题