【发布时间】:2021-09-02 20:08:43
【问题描述】:
我的单元测试尝试@Spy beanA。但是 BeanA @autowire bean B 如下所示:
@RunWith(SpringRunner.class)
public class MyServiceImplTest {
@Spy
private BeanA beanA;
@InjectMocks
private MyService myService = new MyServiceImpl();
@Test
public void testDoSomeThing(){
myService.doSomeThing();
}
}
MyServiceImpl 如下:
@Service
public class MyServiceImpl {
@Autowired
private BeanA beanA;
public doSomeThing(){
....
beanA.beanADoSomeThing()
....
}
}
beanA 如下所示
@Service
public class BeanA {
@Autowired
private BeanB beanB;
public beanADoSomeThing(){
...
//Null pointer exception in here because beanB=null
beanB.beanBDoSomeThing()
}
}
在运行单元测试时,我在beanB.beanBDoSomeThing() 行出现空指针异常,我可以理解原因但是如何解决这个问题?
我试过了
@Mock
private BeanB beanB;
但是这个不行,怎么解决这个问题?
【问题讨论】:
-
所以你在使用 mockito 并且想知道为什么 spring 自动装配不起作用?
-
所有 Mockito 模拟返回原始类型的默认值或
null如果您不存根模拟的行为。考虑这个@Mock vs. @MockBean 解释。接下来,请根据您的测试意图更新您的问题
标签: spring spring-boot unit-testing junit mockito