假设我想为这样的方法创建一个单元测试:

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());
    // ...
}

10-06 09:37