【发布时间】:2017-08-21 09:13:27
【问题描述】:
目前正在使用 Mockito 测试我的一个类中的方法。我的类包含一个列表,该方法接受同一类的对象。问题是当我尝试从对象迭代列表时。我得到一个指向列表的空指针。下面你会看到代码sn-ps。
private Shipment shipment;
private Shipment shipment2;
@Mock
private Order mockOrder1;
@Mock
private Order mockOrder2;
@Mock
private Order mockOrder3;
@Mock
private ArrayList<Order> mockShipmentOrders;
@Mock
private ArrayList<Order> mockShipmentOrders2;
@Before
public void setUp(){
MockitoAnnotations.initMocks(this);
mockShipmentOrders.add(mockOrder1);
mockShipmentOrders.add(mockOrder2);
mockShipmentOrders2.add(mockOrder3);
shipment = new Shipment(1, mockShipmentOrders);
shipment2 = new Shipment(2, mockShipmentOrders2);
}
@Test
public void test_mergeShipments_increasesByOneWhenAShipmentOfOneAddedToAShipmentORderSizeOfTwo(){
shipment.mergeShipments(shipment2);
assertEquals(3, shipment.getShipmentOrders().size());
}
上面你可以看到我的 mockito 测试,下面是我的 Class 方法:
公共类发货{
private long shipmentID;
private List<Order> shipmentOrders;
public Shipment(long shipmentID, List<Order> shipmentOrders){
this.shipmentID = shipmentID;
this.shipmentOrders = shipmentOrders;
}
public List<Order> getShipmentOrders(){
return shipmentOrders;
}
public void mergeShipments(Shipment shipment2){
List<Order> existingShipment = shipment2.getShipmentOrders();
for (Order order : existingShipment){
shipmentOrders.add(order);
}
}
当我运行测试时,我得到了以下行的 java.lang.NullPointerException:for (Order order : existingShipment){ 在mergeShipemts();
问题是;是否可以模拟一个列表,调用该列表,然后在该模拟列表上运行 foreach?
【问题讨论】:
-
为什么需要模拟一个列表?
标签: java list loops testing mocking