У меня есть сущность, например Product
, который объединяет другие объекты, такие как Category
. Эти объекты также могут объединять другие объекты и так далее. Теперь мне нужно проверить свои запросы к базе данных.
Для простого CRUD я бы создал макет EntityManager
. Но что, если у меня есть более сложный запрос, который мне нужно проверить на корректную функциональность. Тогда мне, вероятно, нужно сохранить сущность (или их больше) и попытаться получить / обновить что угодно. Мне также нужно сохранить все сущности, от которых зависит мой Product
.
Мне не нравится такой подход. Как лучше всего проверить такие запросы?
Спасибо за ответы.
Обновление - пример
Предположим, что следующая структура сущности
Эта структура поддерживается реализацией JPA. Например, Product
класс будет выглядеть так:
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
@ManyToOne
private Category category;
@ManyToOne
private Entity1 something;
}
Так что теперь, если я хочу протестировать любой запрос, используемый в DAO, мне нужно создать Product
в базе данных, но это зависит от Category
и Entity1
и есть аннотация @ManyToOne
, поэтому значения не могут быть null
. Так что мне тоже нужно сохранять эти сущности, но они также имеют зависимости.
Я рассматриваю возможность предварительного создания объектов, таких как Category
, Entity1
и Entity2
, перед тестированием с использованием сценария SQL или dbunit (упомянутого в @chalimartines), что позволило бы сохранить большой объем кода, но я не знаю хорошее ли это решение. Я хотел бы узнать некоторые передовые практики для такого тестирования.