Junit: Тестирование родительских дочерних сущностей

У меня есть меню сущностей с дочерними отношениями Ресторан. Я проверю, есть ли рестораны с меню, меню нельзя удалить, поэтому я сделал этот тест Junit:

    Restaurant resto = new Restaurant(menu);
    restaurantService.save(resto);

            menuService.delete  (menu);

            menu = menuService.findByMenuId(menuName);

assertNotNull (menu);

но, конечно, я не могу протестировать этот UserCase, потому что у меня есть исключение:

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails 



public class Menu {

...


@OneToMany(mappedBy = "menu", 
               cascade = CascadeType.ALL, 
               orphanRemoval = true, fetch = FetchType.LAZY)
    @JsonIgnore
    private Set<Restaurants> restaurant = new HashSet<>();
...
}

а также

public class Restaurant {

@ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "menu_id")
    @JsonIgnore
    private Menu topMenu;
..
}

не могли бы вы показать нам свои сущности?

YCF_L 25.06.2018 12:08
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
144
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В таких случаях утверждения утверждения не помогут. Вам нужно использовать «ожидаемый», чтобы убедиться, что удаление не происходит и возникает исключение.

@Test(expected=MySQLIntegrityConstraintViolationException.class)
public void testMenuDeletionFailure()    {
\\invoke the method you need to unit test, there is no need of assertion statements
}

Попробуй это..

Другие вопросы по теме