gpt4 book ai didi

java - 如何构建多层测试对象?

转载 作者:行者123 更新时间:2023-12-01 09:13:28 25 4
gpt4 key购买 nike

我想测试一些类,但从测试角度来看,我发现底层实体非常复杂,因为实体可以具有多层依赖关系。

例如,我有一个名为 Building 的类,其中有一个 Parking,其中有 Car,其中有 Engine ,然后是一个以建筑物为参数并检查柴油车是否多于汽油车的函数。这意味着在我的测试中,我需要创建一个建筑物,然后将一个 parking 场附加到它,我必须附加一个汽车并且等等。

是否有处理深度嵌套实体的标准方法?

最佳答案

如果您正在测试一个需要某种类型对象(即列表)的倍数来验证计数的函数,有几种方法可以实现。

一种方法是模拟一堆对象来返回值。您应该在每个单独的级别进行模拟,因此在 Building 级别,您将模拟 Parking,而在 Parking 级别,您会 mock 汽车

when(car.getEngineType()).thenReturn(EngineType.DIESEL);

但是,如果您想要减少模拟一切的方法,您也可以通过使用种子值创建来隔离独特的情况。

public class CarTest {

private EngineType DIESEL = EngineType.DIESEL;

@Test
public void testCreate() {
Car car = createWithSeedValue();
Assert.equals(DIESEL, car.getEngine().getEngineType());
}

public Car createWithSeedValue() {
return create(EngineTest.createWithSeedValue(DIESEL));
}

public Car create(Engine engine) {
Car car = new Car(engine);
return car;
}
}

在这种情况下,我们可以用一堆我们自己定义的真实 Car POJO 来填充车库,而不是创建一堆模拟 Car,只提供我们需要使用实际对象进行测试的种子值。这样做的好处是,您可以更轻松地使用实际 POJO 实例化列表,而不是模拟传递到列表中的单个对象。

关于java - 如何构建多层测试对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40768799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com