@takret

Как реализовать unit-тестирование DAO объекта в Java (JUnit)?

Добрый день.
Как вы обычно реализовываете unit-тестирование DAO? Проводите ли вы тестирование каждого метода независимо, либо проводите тест всех методов в одном тестовом методе? Дело в том, что я пробовал реализовать тест, используя библиотеку TestNG, так как там имеется возможность определить зависимость тестов друг от друга, но на работе меня за это поругали и сказали, чтобы я только пользоваться JUnit, так это уже не unit тестирование получается.
Но я никак не могу понять, как провести такое независимое тестирование для DAO объекта, если налицо связь некоторых методов.
Приведу пример. Например, два метода:
1) private Entity getEntityById(long id)
2) private void deleteById(long id)
Ведь логично же здесь, что для того, чтобы нормально протестировать delete, мне нужно воспользоваться методом getById, чтобы проверить, что сущность была успешно удалена.
Разве всегда зависимость тестовых методов это плохо?
  • Вопрос задан
  • 4370 просмотров
Пригласить эксперта
Ответы на вопрос 2
@j_wayne
Юнит-тестирование обычно все же делается "один тест на один метод". Граница тут довольно размыта, но ИМХО смысл в этом есть. Не могу точно сказать, как это делается именно на Java, но на ruby я в таком случае запрашиваю сущность не через метод бизнес-слоя, а напрямую из active record. В вашем случае это был бы EntityManager (или аналог из Spring Data).
По мне так независимые тесты определенно лучше зависимых, к примеру, при падении проще понять. что именно отвалилось.
А вообще существует подход, когда взаимодействие с БД стабится/мокируется полностью, что позволяет писать сверхзвуковые тесты. Хотя я лично считаю, что in-memory db вполне достаточно.
Ответ написан
@gurinderu
java developer
DAO слой, в котором нет бизнес логики, что в там собрались тестировать?
Запросы? Тогда это обычное интеграционное тестирование, поднимайте h2 и проверяйте запросы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы