JUnit Как assertTrue / Equals для Необязательного и объекта - PullRequest
2 голосов
/ 20 июня 2019

Как я могу использовать assert.equals для проверки между Необязательным и Объектом? После отладки он показывает те же значения, но мой тест по-прежнему не проходит. Возврат ошибки: в org.springframework.test.util.AssertionErrors.assertTrue

Мой тестовый класс выглядит так:

@RunWith(SpringJUnit4ClassRunner.class)
@ActiveProfiles("test")
@SpringBootTest
public class DishServiceTest {

    private static final String DISH_NAME = "Kaas";
    private static final String DISH_TYPE = "Voorgerecht";

    @Autowired
    private DishService dishService;

    @Test
    public void findById(){
        //execute
        Dish dish = createDish(DISH_NAME, DISH_TYPE);

        Long dishId = dish.getId();

        Optional<Dish> dish2 = dishService.findById(dishId);

        //verify
        assertNotNull(dish2);
        //assertEquals(Optional.of(dish2), dish);
        assertTrue("created a dish" ,Optional.of(dish2).equals(dish));
    }

    private Dish createDish(String dishName, String dishType) {
        Dish dish = new Dish();
        dish.setDishName(dishName);
        dish.setDishType(dishType);
        Dish retval = dishService.save(dish);
        return retval;
    }

Мои результаты отладки:

enter image description here

Ответы [ 2 ]

1 голос
/ 20 июня 2019

Вы переопределили equals () в классе Dish?Если нет, используется Object.equals (), и это возвращает true, только если объект сравнивается с самим собой.Если вам нужна функция equals (), которая возвращает true, если поля двух разных объектов Dish все равны, вы должны написать ее самостоятельно.

1 голос
/ 20 июня 2019

DishService.findById возвращает Optional, который никогда не будет null по контракту; следовательно, assertNotNull в тесте не работает. Сначала утвердите не пустоту с помощью assertTrue(dish2.isPresent()).

Затем сравните содержимое возвращенного объекта Optional с:

assertEquals(dish, dish2.get())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...