gpt4 book ai didi

java - 方法中的 JUnit Mockito 对象初始化

转载 作者:行者123 更新时间:2023-12-01 11:03:28 27 4
gpt4 key购买 nike

我正在使用 Mockito 的 whenthenReturn 函数,我想知道是否有办法在测试函数中初始化内部对象。例如,如果我有:

public class fooTest {
private Plane plane;
private Car car;

@Before
public void setUp() throws Exception {
Mockito.when(Car.findById(eq(plane.getId()))).thenReturn(plane);
}

@Test
public void isBlue() {
plane = new Plane();
plane.setId(2);
Plane result = Car.findById(car);
assertEquals(Color.BLUE, result.getColor());
}
}

显然上面的代码不起作用,因为它抛出空指针异常,但想法是在每个测试函数中初始化平面对象,并让mockito的when使用that 对象。我想我可以在 Plane 对象初始化和设置后将 when 行放入每个函数中,但这会使代码看起来非常难看。有没有更简单的方法?

最佳答案

由于我不知道您的 PlaneCar 类,因此我将在 test 类中做出一些假设。我不知道你想测试什么,如果你想测试 test Car ,理想情况下你不应该在 test 下mock你的类。您可以通过任何方式在 setUp 方法中执行类似的操作。

public class fooTest {

private Plane plane;
@Mock
private Car car;

@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
plane = new Plane();
plane.setId(2);
plane.setColor(Color.BLUE);
Mockito.when(car.findById(eq(plane.getId()))).thenReturn(plane);
}

@Test
public void isBlue() {
// There is no point in testing car since the result is already mocked.
Plane result = car.findById(2);
assertEquals(Color.BLUE, result.getColor());
}
}

关于java - 方法中的 JUnit Mockito 对象初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33157893/

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