0

我有一个返回车辆列表的方法。像这样:

 public List<Vehicle> getVehicles() {

        List<Vehicle> vehicles=vehicleDAO.getAllVehicles();

        for (Vehicle v : vehicles){//NullPointerException
            //some bussines logic...
        }       
        return vehicles;

}

这是我的测试:

@Test
public void testShowVehicles() {
    when(vehicleDAO.getAllVehicles()).thenReturn(listVehiclesMock);
    List<Vehicle> vehicles= service.getVehicles();//NullPointerException
    assertEquals(listVehicleMock, vehicles);
}

当我运行它时,我得到 NullPointerException 因为 Vehicle 不存在。当我有老式的 for 循环时,它通过了测试,但现在我用 forEach 循环替换了我在测试中遇到错误。那么我将如何模拟对象车辆?

4

1 回答 1

2

对于每个循环使用iterator()给定的方法Iterable。然后使用以这种方式获得的迭代器对集合进行迭代。不幸的是,模拟列表的这种方法返回 null,这导致NullPointerException. 要使用每个循环语法,您还必须将iterator()方法绑定到结果。

于 2013-06-01T08:59:02.487 回答