У меня есть тестовый класс интерфейса, который реализует другой суперкласс. В тестовом классе у меня есть метод, который должен обновлять объект из списка массивов; сначала он должен проверить, находятся ли объекты в списке, если он есть, он удалит и добавит новый объект (заменит). Если он не сможет найти объект, он выдает сообщение об исключении. Вот код, который я внедрил:Обновление JAVA объекта объекта ArrayList не обновляется
Прежде всего, я не знаю, правильно ли это сделать. И, когда я проверить его с моим клиентским скриптом теста, я получаю ошибку, которая гласит:
Exception in thread "main" productdb.util.AssertionFailedError: should've gotten ProductNotFoundException
Кода для тестового клиента выглядит следующим образом:
ipod.setId(Integer.MAX_VALUE);
try {
productDB.updateProduct(ipod);
Assert.fail("should've gotten ProductNotFoundException");
} catch (ProductNotFoundException pnfe) {
// expecting this
}
Пожалуйста, помогите мне определить мою ошибку. Благодарю.
Последняя EDIT Я обновил мой код, основанный на обратной связи я получал RE первого пункта бросали ошибку:
public void updateProduct(Product product) throws ProductNotFoundException
{
// TODO Auto-generated method stub
Iterator<Product> pritr = products.iterator();
while(pritr.hasNext())
{
Product pr = pritr.next();
System.out.println(pr.getId());
System.out.println(product.getId());
if (pr.getId().equals(product.getId()))
{
pritr.remove();
}
else
{
throw new ProductNotFoundException("Product Not Found");
}
}
products.add(product);
}
ДРУГОЙ UPDATE
public void updateProduct(Product product) throws ProductNotFoundException
{
// TODO Auto-generated method stub
Iterator<Product> pritr = products.iterator();
boolean match = true;
while(pritr.hasNext())
{
Product pr = pritr.next();
if (pr.getId().equals(product.getId()))
{
pritr.remove();
}
else
{
match = false;
}
}
if (match == false)
{
new ProductNotFoundException("Product not found");
}
else
{
products.add(product);
}
}
Вы бросаете исключение на первом шаге итерации.Как вы думаете, что произойдет, когда нужный элемент будет вторым или последним в списке? –
Так же, как @LuiggiMendoza упоминает - вам нужно пройти через свой код мысленно или на бумаге, так как ваша ошибка должна казаться очевидной. –
Итак, нужно ли сначала перебирать весь список, а затем исключать исключение из цикла while? Извините, если вопросы кажутся немыми, но я думаю, я все еще смущен и пытаюсь понять. – DeeTee