我读到,当使用@Mock时,它应该与@RunWith(MockitoJUnitRunner.class)一起使用,而对于@MockBean,它应该与@RunWith(SpringRunner.class)一起使用。
然而,对于@Mock,我看到MockitoJunitRunner或SpringRunner都可以互换使用。我很困惑为什么SpringRunner也能在这种情况下工作?
@RunWith(MockitoJUnitRunner.class) // also work when @RunWith(SpringRunner.class) is used
public class testService {
@InjectMocks
private ServiceA serviceA;
@Mock
private DependencyA dependencyA;
}发布于 2021-03-20 22:52:20
通常,如果您正在使用Spring Boot并且需要模拟来自Spring的bean,那么您应该使用Spring Boot的@ ApplicationContext支持,而不是简单的@Mock。
如果你的bean注入是通过自动连接的注解进行的,那么@mock将无法工作。
发布于 2021-03-21 20:22:18
在谈论@MockBean的时候引用这个帖子
这个类包含在spring-boot-test库中。它允许在Spring ApplicationContext中添加Mockito mock。
基本上,@MockBean是@Mock和@InjectMocks的组合。因此,您也可以将@Mock与springrunner一起使用,但当然不推荐这样做,因为它更重。
通常,您将使用Mockito进行轻量级单元测试,而当您需要一个模拟的servlet环境时,如在组件测试或混合集成测试中,则使用@MockBean。
https://stackoverflow.com/questions/66704421
复制相似问题