Ошибка при сравнении объектов

98
09 февраля 2022, 02:10

При тестировании проверяются два метода. В первом мы сравниваем аналогичные объекты из списка, один из которых получен из класса DAOImpl, а другой из ServiceImpl,созданный на основе DAOImpl.

Во втором делаем тоже самое, но сравниваем два идентичных объекта, полученных по id из двух описанных выше классов.

По итогу тестирование проходит только второй метод.

public class FilmServiceImplTest {
private FilmDAOImpl filmDAO = new FilmDAOImpl();
private FilmServiceImpl filmService = new FilmServiceImpl();
@Test
public void allFilms() {
    Assert.assertEquals(filmDAO.allFilms(2), filmService.allFilms(2));
}
@Test
public void getById() {
    Assert.assertEquals(filmDAO.getById(5), filmService.getById(5));
}}

Answer 1

А вы equals переопределили?

У вас во втором случае, как понимаю, сравниваются ссылки на один и тот же объект, поэтому тест проходит.

В первом же случае объекты разные (хоть и их члены одинаковые), поэтому и валится тест. Переопределите equals в вашем FilmDAOImpl классе.

Что-то вроде:

@Override
public boolean equals(Object o){
    if (this == o) 
        return true;
    if (o == null)
        return false;
    if (getClass() != o.getClass()) 
        return false;  
    final A a = (A) o;
    // здесь все поля проверяем
    return a.year == this.year && this.genre.equals(a.genre);
}
READ ALSO
Java FX инициализация полей

Java FX инициализация полей

Пишу свое первое приложение на JavaFX - чатСтолкнулся с проблемой обновления данных в компоненте сцены JavaFX - textArea

76
Время конкретного пользователя в Java

Время конкретного пользователя в Java

В коде имеется сервис, который разрешает/отклоняет HTTP запрос в зависимости от времени (до 11:00 разрешено, после - запрещено)На текущий момент...

102
Не изменяется размер Frame

Не изменяется размер Frame

По нажатию на кнопки в подменю с определенным размером окна должен установится данный размер окна,но этого не происходитНе могу понять почему

98