单元测试期间POJO对象的NullPointer

时间:2015-11-24 21:21:07

标签: java unit-testing mocking mockito

我想测试我的控制器,我很难用嘲笑对象。我有这样简单的方法。

@RequestMapping(value = "/places", method = RequestMethod.GET)
public String showPlacesByQuery(Model model, @RequestParam(value = "q", required = false) String query) {

    Location location = geolocationParser.getCoords(query); //this line cause NPE
    List placesList = placeService.findPublicPlaces(location, 0);

    model.addAttribute("query", query);
    model.addAttribute("placesList", placesList);
    return "places/list";
}

我写了测试,我得到了NullPointerException。我认为原因是geolocationParser.getCoordS(query)返回null?或整个作业{/ 1}}

有问题
Location location = geolocationParser.getCoords(query);

我花了好几个小时让它以不同的方式运作,没有结果。

2 个答案:

答案 0 :(得分:1)

我认为问题在于你没有正确地将模拟传递给被测系统。如果您是自动装配,则需要启动应用程序上下文,否则无法注入该类。

答案 1 :(得分:1)

如果您正在测试PlaceController类,则不应手动为该类创建实例。使用@InjectMocks

@Mock
private FormServiceImpl formService;

@Mock 
private FormDao formDao;

@InjectMocks
private PlaceController placeController;

并从此处删除

@Test
public void testShowPlacesByQuery() throws Exception {

    String query = "SomeQuery";
    //PlaceController placeController = new PlaceController();