繁体   English   中英

无法弄清楚为什么此测试在向 ArrayList 添加项目时失败

[英]cannot figure out why this test is failing here in adding a item to ArrayList

method code here:
public boolean addItem(MediaItem item)
    {
        for (int count = 0; count < Library.size(); count++){
        String callNum = Library.get(count).getCallNumber();
            if(item.getCallNumber().compareToIgnoreCase(callNum) == 0)
        {
          while( item.getCopyNumber() < Library.get(count).getCopyNumber())
          {
            int copyNum = item.getCopyNumber();
            copyNum++;
            item.setCopyNumber(copyNum);
           } 
           Library.add(item);
           return true;
           
        } else if (item.getCallNumber().compareToIgnoreCase(callNum) != 0)
        {
            item.setCopyNumber(1);
            Library.add(item);
            return true;
        }
       
    }
           
        return false;
      
    }
testCases:
    public void testAddItem(){
        AnytownLibrary newlib = new AnytownLibrary();
        assertNotNull(newlib);
        MediaItem newItem = new Book();
        MediaItem nextItem = new Book();
        
        assertNotNull(nextItem);
        assertNotNull(newItem);
        newItem.setCallNumber("1");
        nextItem.setCallNumber("1");
        newlib.addItem(newItem);
        assertTrue(newlib.addItem(newItem));
        newlib.addItem(nextItem);
        assertTrue(newlib.addItem(nextItem));
        
        
      
}

我无法弄清楚为什么这会失败,它一直在这里抛出断言错误,并且它没有告诉我它只是输出是错误的,所以我不确定是什么问题,我已经完全测试了我的 get 和 set 方法,它们是正确的; 和这个版本只是断言(itemname)而不是调用号返回之前传递的true,所以我确定答案在方法本身的某个地方

您将项目添加到库的逻辑是错误的。 添加第一个项目总是会失败,因为 for 循环不执行,因为大小为零。 所以什么都不会发生。 由于这失败,所有后续的 addItem 调用也将失败。 有很多方法可以做到这一点,一个简单的方法是检查大小是否为零并直接添加到列表中并返回。 否则使用 ur for 循环。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM