Junit: тестирование родительских дочерних объектов - PullRequest
0 голосов
/ 25 июня 2018

У меня есть меню сущностей, с детьми отношения Ресторан.Я буду проверять, есть ли рестораны с меню, меню не может быть удалено, поэтому я сделал этот тест 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;
..
}

1 Ответ

0 голосов
/ 26 июня 2018

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

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

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

...