【发布时间】:2015-08-21 20:32:38
【问题描述】:
我有一个实现另一个超类的接口测试类。在测试类中,我有一个方法应该检索 ArrayList 中的所有对象。首先它检查它是否为空。如果不是,它应该返回整个列表。这是我尝试过的。
public class ProductDBImpl implements ProductDB {
// field declarations
ArrayList<Product> products = new ArrayList<Product>();
@Override
public List<Product> getAllProducts()
{
// TODO Auto-generated method stub
// TODO Auto-generated method stub
// create an iterator for the Arraylist
if (products.isEmpty())
{
return new ArrayList<Product>() ;
}
return products;
}
不幸的是,当我运行我的测试脚本(测试接口测试类和超类)时,getAllProducts() 方法无法正常工作,它返回了productdb.util.AssertionFailedError: expected:<1> but was:<0> 消息。下面是测试脚本测试 getAllProducts() 方法的方式:
// testing getAllProducts()
List<Product> productList = productDB.getAllProducts();
int size = productList.size();
productList.remove(0);
productList = productDB.getAllProducts();
Assert.assertEquals(size, productList.size());
请帮我找出我的错误。谢谢。
【问题讨论】:
-
上面的实际实现是getAllProducts()还是blue rpint?
-
是的,上面是getAllProducts()的实际实现。
-
被覆盖的方法只做了这么多,检查是否为空。
-
PS. 在 getAllProducts() 中有一条注释说“创建一个迭代器”,除了方法签名需要返回一个列表,而不是迭代器。
-
您删除了列表中的单个元素,然后您希望保持其大小?什么?你知道什么是引用以及它们是如何工作的吗? ...