Mockito测试不起作用

时间:2017-11-01 02:47:48

标签: java junit mockito

我是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”);

处给出空指针异常

1 个答案:

答案 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);
}