Java 在进行单元测试时,仅实例化其他域对象就足够了吗?
如果您测试类Car,并希望在其上创建一个返回座位数的方法。如果不需要,只需多次写入Java 在进行单元测试时,仅实例化其他域对象就足够了吗?,java,unit-testing,Java,Unit Testing,如果您测试类Car,并希望在其上创建一个返回座位数的方法。如果不需要,只需多次写入car.addSeat(new Seat())而不在座椅上实际设置一些数据就足够了吗?该方法类似于: public int numberOfSeats() { return seats.size(); } 鉴于此,座位是一个座位列表。或者,即使不需要,您也会在座椅上填写数据吗?你是否应该尽可能地努力把测试写得最少? < P>你应该考虑使用嘲弄。通过模拟,您可以使用预期控制未被测试的对象的行为 e、 g。
car.addSeat(new Seat())
而不在座椅上实际设置一些数据就足够了吗?该方法类似于:
public int numberOfSeats() {
return seats.size();
}
鉴于此,座位是一个座位列表。或者,即使不需要,您也会在座椅上填写数据吗?你是否应该尽可能地努力把测试写得最少? < P>你应该考虑使用嘲弄。通过模拟,您可以使用预期控制未被测试的对象的行为 e、 g。 当(seat.getSomeProperty())。然后返回(“某个值”) 但是如果你不需要这个值,你可以把期望从你的代码中去掉。这样,代码就可以在不重写测试的情况下更新,并且维护测试就简单多了 结帐莫基托
我想到两种方法
1) 所以你也对域类使用模拟?2) 像这样模仿比像我一样创建空对象好吗?是的,这更好,因为你可以完全控制对象。下面是来自真实世界示例的一个场景。我创建了具有两个属性的非常薄的域对象。有人决定其中一个属性是必需的,并将该属性添加到构造函数中。在测试中,我不想通过该属性,所以我只创建了一个带有ObjA a=mock(ObjA.class)的mock,并可以创建我想要的任何行为。mock允许您清楚地定义测试中的内容以及依赖项。