Текущего ВыпускАвтоматизированного тестирования классов домена (не модульное тестирование)
Пожалуйста, обратитесь к соответствующему сообщению: What can go wrong in hibernate domain classes – so that we need to (unit) test them? В моем новом проекте J2EE, я пытаюсь проверить (не обязательно модульные тесты) объекты предметной области Я начинаю писать. Они не вовлекают большую часть бизнес-логики (бизнес-логика является частью бизнес-службы поверх объектов DAO), и, тестируя, я по сути обеспечиваю целостность объектов домена, и я пытаюсь это сделать, тестируя DAO методы. Обратите внимание: я не могу протестировать объекты домена с помощью JUnit и т. Д., Поскольку у них нет никаких методов в моем случае, и у них есть атрибуты и аннотации отображения гибернации.
Например, Пациент объект домена. PatientDAO имеет дело с операциями CRUD объекта домена пациента. Вот методы (не полные и намеревающиеся добавить еще немного для проверки граничных условий).
Примечание: Я не называю это модулем тестов, они могут быть мини-интеграционными тестами и т. Д. Я в порядке, этот подход работает при тестировании объектов домена.
PatientDAOTest класс содержит: - testCreatePatient(); - testUpdatePatient(); - testFindPatient(); - testDeletePatient();
PatientDAO класс содержит: - createPatient(); - updatePatient(); - findPatient(); - deletePatient();
Позволяет нам рассмотреть метод testUpdatePatient(), который проверяет метод updateMethod() в объекте домена. Теперь, как я буду внедрять метод testUpdatePatient()? Ну, я думаю: 1. Получите существующего пациента с использованием метода домена «findPatient()» 2. Обновите запись пациента с новыми данными. 3. Сохраните его обратно в базе данных с помощью метода domainPatient() 4. Получение записи пациента обратно из базы данных, используя «findPatient()» метод домена 5. Assert для обновленных данных
Вопрос
Как вы можете видеть, я использую базу данных в тестирование, с которым я в порядке, но есть ли какие-либо проблемы с этим подходом?
Каков мой реальный вопрос (прочитайте как вопрос) об этом подходе?
мне нужно использовать 'findPatient()' метод (фактически в 2 раза) при тестировании 'updatePatient()'. Это то, что мне не нравится, тот факт, что я должен использовать другой метод при тестировании метода, в то время как другой метод сам по себе может быть ошибкой. Эта же история повторяется, когда я пытаюсь проверить другие методы CRUD.
В качестве альтернативы, я мог бы написать select sql query для извлечения записи пациента из базы данных для утверждения (после запуска обновления) из тестового метода, но он просто побеждает цели использования hibernate (чтобы уменьшить усилия SQL-кодирования), следовательно, мне не нравится этот подход.
Мой вопрос в том, что обстоит дело с другими методами для проверки конкретных методов и это не плохой подход? Если это не так, как я должен проверять отображение ORM в объектах моего домена.
Спасибо за ваши комментарии и извинения за столь длительный пост.