Java 为什么我的方法不能正确检测对象是否为空?
我正在编写JUnit测试来测试一个方法,该方法将公共汽车站添加到收藏夹列表中。仅当停止不为null或停止不在列表中时,才应将停止添加到列表中。这是我的方法:Java 为什么我的方法不能正确检测对象是否为空?,java,testing,junit,Java,Testing,Junit,我正在编写JUnit测试来测试一个方法,该方法将公共汽车站添加到收藏夹列表中。仅当停止不为null或停止不在列表中时,才应将停止添加到列表中。这是我的方法: public boolean addStop(BusStop stop) { if (stop == null || stops.contains(stop)) { return false; else { stops.add(stop); return true; } 这是我的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。有人能帮我指出哪里出了问题吗?首先,在JUnit“assert”方法调用中,预期值先出现,然后是测试值。使用assertEquals(4,stops.size())
。应该是4,是5
其次,您正在调用stops.add(stop5)
,而不是addStop
方法,因此添加了null
。让您的test
方法实际调用addStop
首先,在JUnit“assert”方法调用中,预期值首先出现,然后是测试值。使用assertEquals(4,stops.size())
。应该是4,是5
其次,您正在调用stops.add(stop5)
,而不是addStop
方法,因此添加了null
。让您的test
方法实际调用addStop
首先,在JUnit“assert”方法调用中,预期值首先出现,然后是测试值。使用assertEquals(4,stops.size())
。应该是4,是5
其次,您正在调用stops.add(stop5)
,而不是addStop
方法,因此添加了null
。让您的test
方法实际调用addStop
首先,在JUnit“assert”方法调用中,预期值首先出现,然后是测试值。使用assertEquals(4,stops.size())
。应该是4,是5
其次,您正在调用
stops.add(stop5)
,而不是addStop
方法,因此添加了null
。让您的test
方法实际调用addStop
调试有三个方面:输入、过程和输出。您给了我们流程和输出,但让我们猜测输入。因为您使用的是停止。直接添加(stop5)
,而不是调用addStop(stop5)
单元测试如何能够访问内部数据结构停止
?@gtgaxiola啊,谢谢,我一定忽略了这一点,因为它们听起来非常相似。调试有三个方面:输入、过程和输出。您给了我们流程和输出,但让我们猜测输入。因为您使用的是停止。直接添加(stop5)
,而不是调用addStop(stop5)
单元测试如何能够访问内部数据结构停止
?@gtgaxiola啊,谢谢,我一定忽略了这一点,因为它们听起来非常相似。调试有三个方面:输入、过程和输出。您给了我们流程和输出,但让我们猜测输入。因为您使用的是停止。直接添加(stop5)
,而不是调用addStop(stop5)
单元测试如何能够访问内部数据结构停止
?@gtgaxiola啊,谢谢,我一定忽略了这一点,因为它们听起来非常相似。调试有三个方面:输入、过程和输出。您给了我们流程和输出,但让我们猜测输入。因为您使用的是停止。直接添加(stop5)
,而不是调用addStop(stop5)
单元测试如何能够访问内部数据结构停止
?@gtgaxiola啊,谢谢,我一定忽略了这一点,因为它们听起来非常相似。哎呀!谢谢!哎呀!谢谢!哎呀!谢谢!哎呀!谢谢!