项目场景:
写java后端,用mockito做单元测试
问题描述
跑测试代码的时候,一直报空指针错:
测试代码如下:
@RunWith(MockitoJUnitRunner.class)publicclassRuleServiceImplTest{@InjectMocksprivateRuleServiceImpl ruleService;@MockprivateRuleMapper mockRuleMapper;@Beforepublicvoidsetup(){MockitoAnnotations.initMocks(this);}@TestvoidaddRule(){RuleVO ruleVO1=newRuleVO(13,1,2,3,4,5,4,0);Rule rule1=newRule(ruleVO1);Mockito.when(mockRuleMapper.insert(rule1)).thenReturn(1); #报错行
Assert.assertEquals(resultVO1.getCode(),Constant.REQUEST_SUCCESS);}}
debug发现 ruleService 和 mockRuleMapper 为空:
一开始以为是测试代码哪写错了,作为一个后端小白,在网上搜索相关bug解决办法,乃至询问身边写过测试的人,前前后后弄了好几个小时,还是一直报错空指针
原因 & 解决方案:
最后仔细对比,我才发现是import的时候出了问题,在写到注释@Test的时候,idea自动帮我import了,结果import错了
错误版本:
正确版本:
反思:
首先是经验太少(cai 了,这种错误竟然都没有发现,其次是太相信idea了,完全没想到会import错,下午这几个小时就这样没了
版权归原作者 lala2527 所有, 如有侵权,请联系我们删除。