我在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类(当前类)方法的方法。
@SpringBootTest是一个实际启动Spring容器以及应用程序bean的测试。
测试中的@自动装配字段的行为与普通Spring-Beans中的行为相同;它们被注入应用程序中配置的实际bean(xml、@Configuration中的@Bean或@Component/@Service)。
@MockBean创建一个mock,它们的行为就像普通的mock一样,您可以在/然后等使用控制,并使用
验证
等进行检查。它们的特殊之处在于它们被注入到上下文中的其他bean中(例如,当您调用Mockito.initAnnotations(this)
时)。
mockito.mock()
也许给出问题的最好方法是在下面显示代码:
本文向大家介绍#{}和${}的区别是什么?相关面试题,主要包含被问及#{}和${}的区别是什么?时的应答技巧和注意事项,需要的朋友参考一下 #{}是预编译处理,${}是字符串替换。 Mybatis 在处理#{}时,会将 sql 中的#{}替换为?号,调用 PreparedStatement 的 set 方法来赋值; Mybatis 在处理{}时,就是把${}替换成变量的值。 使用#{}可以有效的防
问题内容: 为什么在这种情况下不能使用? 但可以使用 生成同一事物的两种方式不是吗? 问题答案: 并做两件事。此处的其他答案将更详细地解释,但更为简单: 告诉Spring’这是此类的一个实例,请保留该类,并在我询问时将其还给我’。 说“请给我一个该类的实例,例如,我@Bean之前用注释创建的一个实例”。 那有意义吗?在第一个示例中,你要让Spring给你一个的实例,但是你从未创建一个实例,因此Sp
本文向大家介绍@Inject和@Autowired之间的区别,包括了@Inject和@Autowired之间的区别的使用技巧和注意事项,需要的朋友参考一下 @Inject和@Autowired这两个注释都用于在应用程序中自动装配。 @Inject批注是Java 6中引入的Java CDI的一部分,而@Autowire批注是spring框架的一部分。因此,两个注释都实现相同的目的,我们可以在应用程序
如果我用MockBean替换Autowired的话,它是有效的,但我不知道为什么