在进行单元测试时,仅仅实例化其他域对象是否足够?

时间:2013-04-08 15:36:06

标签: java unit-testing

如果您测试类Car,并希望在其上创建一个返回席位数的方法。如果不需要在座位上实际设置一些数据,只需多次写car.addSeat(new Seat())就足够了吗?该方法看起来像:

public int numberOfSeats() {
    return seats.size();
}
鉴于座位是一个席位列表。或者即使不需要座位上的数据也会填写?您是否应该始终努力将测试工作保持在最低限度?

2 个答案:

答案 0 :(得分:3)

你应该考虑使用模拟。通过模拟,您可以控制未被测试的对象如何使用期望行为。

e.g。 when(seat.getSomeProperty())。thenReturn(“some value”)

但是如果你不需要这个值,你可以将期望从你的代码中删除。这样可以在不重写测试的情况下更新代码,并且维护测试更加简单。

Checkout Mockito https://code.google.com/p/mockito/

答案 1 :(得分:0)

我有两种方法。

  1. 准确定义您要测试的内容,您将确切知道需要填充哪些数据。在你的例子中,填补席位不是必要的。

  2. 如果您想测试的不仅仅是numberOfSeats,您可以使用setUp和tearDown为每个测试创建一组可重复使用的数据。 JUnit在EACH测试之前运行setUp,之后运行tearDown。