簡體   English   中英

Java中的單元測試集合

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM