当前位置: 首页 > 知识库问答 >
问题:

@Autowired和@MockBean的区别是什么

祁飞飙
2023-03-14

我在spring boot项目中为我们的服务类编写单元测试。当我自动连接正在测试的类时,测试正常运行,当我使用@MockBean insead of @Autowire时,测试失败。

@SpringBootTest
class SignupServiceTest {

  @Autowired SignupService signupService;

  @MockBean DSService dsService;

  @MockBean SignupHelper signupHelper;

  @MockBean SessionHelper sessionHelper;

  @MockBean CommonService commonService;

有人能帮我区别一下@MockBean失败的原因吗?另外,在mockito中有一种模仿autowired类(当前类)方法的方法。

共有1个答案

韦飞尘
2023-03-14

@SpringBootTest是一个实际启动Spring容器以及应用程序bean的测试。

测试中的@自动装配字段的行为与普通Spring-Beans中的行为相同;它们被注入应用程序中配置的实际bean(xml、@Configuration中的@Bean或@Component/@Service)。

@MockBean创建一个mock,它们的行为就像普通的mock一样,您可以在/然后等使用控制,并使用验证等进行检查。它们的特殊之处在于它们被注入到上下文中的其他bean中(例如,当您调用Mockito.initAnnotations(this)时)。

 类似资料:
  • 也许给出问题的最好方法是在下面显示代码:

  • 本文向大家介绍#{}和${}的区别是什么?相关面试题,主要包含被问及#{}和${}的区别是什么?时的应答技巧和注意事项,需要的朋友参考一下 #{}是预编译处理,${}是字符串替换。 Mybatis 在处理#{}时,会将 sql 中的#{}替换为?号,调用 PreparedStatement 的 set 方法来赋值; Mybatis 在处理{}时,就是把${}替换成变量的值。 使用#{}可以有效的防

  • 问题内容: 为什么在这种情况下不能使用? 但可以使用 生成同一事物的两种方式不是吗? 问题答案: 并做两件事。此处的其他答案将更详细地解释,但更为简单: 告诉Spring’这是此类的一个实例,请保留该类,并在我询问时将其还给我’。 说“请给我一个该类的实例,例如,我@Bean之前用注释创建的一个实例”。 那有意义吗?在第一个示例中,你要让Spring给你一个的实例,但是你从未创建一个实例,因此Sp

  • 本文向大家介绍@Inject和@Autowired之间的区别,包括了@Inject和@Autowired之间的区别的使用技巧和注意事项,需要的朋友参考一下 @Inject和@Autowired这两个注释都用于在应用程序中自动装配。 @Inject批注是Java 6中引入的Java CDI的一部分,而@Autowire批注是spring框架的一部分。因此,两个注释都实现相同的目的,我们可以在应用程序

  • 如果我用MockBean替换Autowired的话,它是有效的,但我不知道为什么