簡體   English   中英

單元測試用於調用getter和setter的映射方法

[英]Unit tests for mapping methods that call getters and setters

假設我想為這樣的方法創建一個單元測試:

public Car map(CarReq request) {

    Car car = new Car();
    car.setPrice(carReq.getPrice());
    car.setColour(carReq.getColour());
    car.setType(carReq.getType());

    // Other 20 lines like these

    return car;
}

我可以模擬carRequest並告訴每個方法應該返回什么。 但這就像沒有測試任何東西一樣,因為所有方法所做的都是從carReq獲取值。

我可以創建一個測試carReq對象(不帶模擬),並檢查是否將相同的值復制到輸出Car對象中。 但這是很多工作,對嗎?

有沒有更聰明的方法?

您要測試方法的邏輯。

因此,如果該方法所做的是將CarReq的屬性復制到Car ,則應測試以下內容:

@Test
public void mapTest() {
    // Given
    CarReq carReq = new CarReq(10000D, ...);

    // When
    Car car = myClass.map(carReq);

    // Then
    Assert.assertEquals(car.getPrice(), carReq.getPrice());
    // ...
}

我不太確定這是什么問題? 當然,由於該方法接受了一個請求並返回了一個新的Car ,這正是您要測試的內容嗎? 如果這樣做,我會:

  1. 創建一個填充的請求,並確定“ Car字段是請求中的內容
  2. 也許斷言每次調用都會給您一輛Car
  3. 如果傳入null,則斷言預期的行為(再次取決於方法的建議用法)

您說該方法所做的只是調用設置器/獲取器,但是請不要忘記, 單元測試的一個目的是斷言今后的行為仍然相同(即,您正在測試回歸) 如果您為此方法添加了其他功能,並且不小心破壞了某些內容,上述測試將立即告訴您。

這工作很多嗎? 也許(也許幾分鍾的復制/粘貼getter / setter調用和將參數更改為每個屬性都是唯一的)。 但這比以后解決生產中的問題要少得多。

我可以創建一個測試carReq對象(不帶模擬),並檢查是否將相同的值復制到輸出Car對象中。 但這是很多工作,對嗎?

是的,但是如果您真的願意對該方法進行單元測試,則必須執行此操作。 請注意,您可以使用Orika之類的庫來為您執行這種愚蠢的字段映射方法。 節省時間和代碼行:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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