2014-07-25 141 views
0

我正在编写JUnit测试以测试将公交车站添加到收藏夹列表的方法。如果停止点不为空或停止点不在列表中,它应该只将停止点添加到列表中。这是我为它的方法:为什么我的方法无法正确检测对象是否为空?

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.可任何人都可以帮助指出我要去哪里错了吗?

+0

调试有3个方面:输入,过程和输出。你给我们的过程和输出,但让我们猜测输入。 –

+4

由于您直接使用'stops.add(stop5)'而不是调用'addStop(stop5)' – gtgaxiola

+0

单元测试如何访问内部数据结构'stops'? – isnot2bad

回答

3

首先,在JUnit的“assert”方法调用中,期望值首先变为测试值。使用assertEquals(4, stops.size())。应该是预期的4,是5.

其次,你打电话stops.add(stop5),而不是addStop方法,所以null被添加。你的test方法实际上调用addStop

+0

哎呀!非常感谢! – tigfra

相关问题