gpt4 book ai didi

java - Mock beans 与 Mockito 的 Spring Boot 单元测试

转载 作者:行者123 更新时间:2023-11-30 02:28:37 25 4
gpt4 key购买 nike

我正在使用 spring boot 1.5.4 项目,我需要对测试包进行澄清。

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

我的问题是 - 它是否类似于 Mockito 外部依赖项,我可以避免使用 Mockito 作为外部依赖项,因为 Spring Boot mock.* 包具有 Mockito 具有的所有功能?

最佳答案

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

话虽如此,mockito 的 @Mock 和 Spring 的 @MockBean 有点不同,@MockBean 基本上是一个 @Mock 加上 @Bean 所以它做了mockito注释的作用,而且它也像bean一样工作,即它将实例放置在Spring的应用程序上下文中,并且所有其他与spring bean相关的概念都出现了也。

来自documentation -

Annotation that can be used to add mocks to a Spring ApplicationContext. Can be used as a class level annotation or on fields in either @Configuration classes, or test classes that are @RunWith the SpringRunner.

Mocks can be registered by type or by bean name. Any existing single bean of the same type defined in the context will be replaced by the mock, if no existing bean is defined a new one will be added.

When @MockBean is used on a field, as well as being registered in the application context, the mock will also be injected into the field.

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

关于java - Mock beans 与 Mockito 的 Spring Boot 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44856720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com