我是Mockito的新手,在进行单元测试时,我得到一个空指针异常。有人可以让我知道我在这里做错了什么吗?以下是需要测试的服务方法:
class a{
public List<String> getabc(String div){
ResponseEntity<SD> sd = resttemplate.getforEntity("http://localhost:8080/abc/"+div,SD.class);
if(sd !=NULL && sd.getstatuscode() == HTTPstatus.oK){
return sd.getbody().getsd();
}
}
Public class testa{
@Mock
Resttemplate resttemplate;//mocking resttemplate
@InjectMocks
private a a1= new a(restTemplate); //injectingmocks to the service
@Test
public void testmetha(){
List<String> ts = new ArrayList<>();
ts.add("t1");
ts.add("t2");
SD sd = new SD();
sd.setid(ts);
ResponseEntity<SD> rs = new ResponseEntity<SD>(sd, HTTPSTATUS.OK);
when(resttemplate.getforEntity("http://localhost:8080/abc/25",SD.class)).thenReturn(rs);
ts = a1.getabc("25");
assertEquals(3, a1.getabc("25").size());
}
}
它在 - ts = a1.getabc(“25”);
处给出空指针异常答案 0 :(得分:1)
从以下位置删除实例:
@InjectMocks
private a a1= new a(restTemplate); //injectingmocks to the service
它应该是:
@InjectMocks
private a a1;
Mockito会自动检测你的构造函数并注入一个模拟来构建你的对象。否则可能无法正常工作。
此外,请确保您的模拟已正确初始化,使用适当的跑步者进行测试类@RunWith(MockitoJUnitRunner.class)
或使用@Before代码执行此操作。
@Before
public void initMocks() {
MockitoAnnotations.initMocks(this);
}