为什么我的方法没有正确检测对象是否为空?

时间:2014-07-25 17:53:13

标签: java testing junit

我正在编写JUnit测试来测试一个方法,该方法将一个公共汽车站添加到收藏夹列表中。如果stop不为null或者stop不在列表中,它应该只将stop添加到列表中。这是我的方法:

public boolean addStop(BusStop stop) {
  if (stop == null || stops.contains(stop)) {
       return false;
  else {
       stops.add(stop);
       return true;
}

这是我的JUnit测试:

public void testAddStop() {
  stops.add(stop1);
  stops.add(stop2);
  stops.add(stop3);
  stops.add(stop4); // Stops 1-4 are not null
  assertEquals(stops.size(), 4);
  stop5 = null;
  stops.add(stop5); // Stop 5 is null 
  assertEquals(stops.size(), 4);
}

当运行测试时,第二个assertEquals失败,说它预期为5,但实际上是4.任何人都可以帮助指出我在哪里出错吗?

1 个答案:

答案 0 :(得分:3)

首先,在JUnit"断言"方法调用,首先是期望值,然后是测试值。使用assertEquals(4, stops.size())。应该预计4,是5。

其次,您正在调用stops.add(stop5),而不是addStop方法,因此添加了null。让test方法实际调用addStop