繁体   English   中英

针对Mock Bean和Mockito的Spring Boot单元测试

[英]Spring Boot Unit testing for Mock beans vs Mockito

我使用的是Spring Boot 1.5.4项目,需要在测试包上进行说明。

我看到Spring Boot附带了@MockBean ,它是org.springframework.boot.test.mock.mockito软件包的一部分。

我的问题是-它类似于Mockito的外部依赖关系,我可以避免将Mockito用作外部依赖项,例如spring boot模拟。*软件包具有Mockito的所有功能?

正如Greg的回答中所指出的那样, spring-boot-starter-test已经包含了Mockito核心,因此它已经存在于您的项目中,不需要任何外部依赖。

话虽这么说@MockBean@Mock和Spring的@MockBean有点不同,因为@MockBean基本上是@Mock加上@Bean因此它也执行了@Bean注释,并且也像bean一样工作, @Bean实例放置在Spring的应用程序上下文和所有其他与Spring Bean相关的概念也都出现在图中。

文档 -

可用于将模拟添加到Spring ApplicationContext的注释。 可用作类级别的注释或用作@Configuration类或@RunWith SpringRunner的测试类中的字段。

可以通过类型或bean名称来注册模拟。 在上下文中定义的任何现有的相同类型的单个Bean将由模拟代替,如果未定义现有的Bean,则将添加一个新的。

当在字段上使用@MockBean以及在应用程序上下文中注册@MockBean时,该模拟也将注入到字段中。

对于没有DI和上下文的非Spring应用程序,应使用@Mock ;对于Spring应用程序,应使用@MockBean

如果查看spring-boot-starter-test的依赖项 ,您会发现它依赖于Mockito库,因此它已包含在您的库中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM