这里有什么区别 - @Autowired 和 @MockBean
What is difference here - @Autowired and @MockBean
我在 spring 引导项目中为我们的服务 classes 编写单元测试。当我自动装配正在测试的 class 时测试正确 运行 并且当我使用 @Autowire 的 @MockBean insead 时它失败了。
@SpringBootTest
class SignupServiceTest {
@Autowired SignupService signupService;
@MockBean DSService dsService;
@MockBean SignupHelper signupHelper;
@MockBean SessionHelper sessionHelper;
@MockBean CommonService commonService;
有什么可以帮助我解决差异以及@MockBean 失败的原因。还有一种方法可以在 mockito.
中模拟自动装配 class(Current class) 的方法
@SpringBootTest 是一个实际启动 Spring 容器以及应用程序 bean 的测试。
@Autowired 字段在测试中的行为与它们在普通 Spring-Beans 中的行为相同;它们被注入应用程序中配置的实际 beans(xml、@Configuration 中的 @Bean 或 @Component/@Service)。
@MockBean 创建了一个 mock,它们的行为与普通 mock 一样,您可以使用 when/then
等进行控制,并使用 verify
等进行检查。它们的特别之处在于它们被注入到上下文中的其他 bean 中(例如,当您调用 Mockito.initAnnotations(this)
时)。
我在 spring 引导项目中为我们的服务 classes 编写单元测试。当我自动装配正在测试的 class 时测试正确 运行 并且当我使用 @Autowire 的 @MockBean insead 时它失败了。
@SpringBootTest
class SignupServiceTest {
@Autowired SignupService signupService;
@MockBean DSService dsService;
@MockBean SignupHelper signupHelper;
@MockBean SessionHelper sessionHelper;
@MockBean CommonService commonService;
有什么可以帮助我解决差异以及@MockBean 失败的原因。还有一种方法可以在 mockito.
中模拟自动装配 class(Current class) 的方法@SpringBootTest 是一个实际启动 Spring 容器以及应用程序 bean 的测试。
@Autowired 字段在测试中的行为与它们在普通 Spring-Beans 中的行为相同;它们被注入应用程序中配置的实际 beans(xml、@Configuration 中的 @Bean 或 @Component/@Service)。
@MockBean 创建了一个 mock,它们的行为与普通 mock 一样,您可以使用 when/then
等进行控制,并使用 verify
等进行检查。它们的特别之处在于它们被注入到上下文中的其他 bean 中(例如,当您调用 Mockito.initAnnotations(this)
时)。