[英]Unit testing Collection in Java
我有一個單元測試,可以讓我遍歷包含車輛列表的Collection對象。 每次迭代時,我想檢查一下車輛是否是汽車的實例。 所以我的代碼看起來像這樣:
public class VehicleChecker {
protected boolean checkVehicles(Garage garage) {
for (Vehicle vehicle : garage.getVehicles() {
if (vehicle instanceof Automobile) return true;
}
}
}
因此,我相應地編寫了代碼:
@Mock private Garage mockGarage;
@Mock private VehicleCollection mockVehicleCollection;
@Mock private VehicleCollectionIterator mockVehicleCollectionIterator;
@Mock private Vehicle mockVehicle;
@Test
public void testCheckVehicles() {
VehicleChecker testObject = new vehicleChecker();
when(mockGarage.getVehicles()).thenReturn(mockVehicleCollection);
when(mockVehicleCollection.iterator()).thenReturn(mockVehicleCollectionIterator);
when(mockVehicleCollectionIterator.hasNext()).thenReturn(true).thenReturn(false);
when(mockVehicleCollectionIterator.next()).thenReturn(mockVehicle);
boolean result = testObject.checkVehicles(mockGarage);
verify(mockGarage).getVehicles();
}
驗證語句出現問題。 根據編寫方式,測試應通過。 但是,當我單步執行代碼時,我的代碼只是完全跳過了for循環。 這是為什么? 與ArrayList相比,迭代一個Collection的方式是否有所不同? 如果是這樣,我如何正確模擬這種互動?
您確定已使用MockitoAnnotations.initMocks初始化了模擬嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.