Spring, JPA - тестирование абстрактного класса - PullRequest
0 голосов
/ 03 апреля 2012

У меня много сущностей в приложении, и я использую реализацию JPA для их сохранения, поэтому большинство методов CRUD в DAO одинаковы (см. Пример диаграммы классов ниже).

enter image description here

Для этой цели существует интерфейс DAOTemplate, который содержит методы, доступные для всех сущностей, и реализуется абстрактным классом AbstractDAO.

Для некоторых сущностей требуются дополнительные методы, такие как findByEmail для User сущности.Для этого есть интерфейс DAO с такими методами, например, UserDAO.

Теперь я хочу написать интеграционные тесты для всех методов (в DAOTemplate и UserDAO).Какое лучшее решение?Должен ли я каким-то образом (как?) Проверить AbstractDAO, а затем только специальные методы в UserDAOTest или я должен проверить все методы в UserDAOTest, а также в других тестовых примерах для других объектов?Я пытаюсь избежать второго решения, потому что оно мне не нравится.

Спасибо за ответы.

Ответы [ 2 ]

1 голос
/ 03 апреля 2012

У меня была похожая ситуация. Если у вас много DAO, вы можете медленно протестировать те же методы. Я создал фиктивную сущность и реализацию DAO только для тестирования.

1 голос
/ 03 апреля 2012

Вам следует протестировать все методы в UserDAOTest, так как вызов их будет иметь разные результаты в зависимости от того, какую сущность вы пытаетесь сохранить.Вы будете тестировать не только свой код DAO, но и свои объекты, их аннотации и их взаимосвязи.

Но следуя принципу DRY, вы не должны повторно реализовывать методы AbstractDAO в каждом тесте, но вы можете дляэкземпляр создает AbstracDAOTest, от которого наследуется весь UserDAOTest.То, что ваши тесты соответствуют вашему коду, должно выглядеть довольно хорошо ..

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