Junit - тестирование результатов службы Hibernate - PullRequest
3 голосов
/ 29 марта 2011

У меня есть служба DAO, которая извлекает и сохраняет данные в Hibernate. Кто-нибудь может указать мне на тестирование методологии с использованием JUnit для такого сервиса.

Какая лучшая практика? Когда я должен был пройти тест, не прошедший тест, и должен ли я проверить исключение?

Ответы [ 3 ]

3 голосов
/ 29 марта 2011

Вы должны проверить все возможные пути в вашем DAO. Вы определенно будете использовать базу данных в памяти для своих тестов, например HSQLDB.

Одной из стратегий было бы предоставить базе данных некоторые исходные данные в вашем методе setUp() и очистить их на tearDown(), чтобы все тесты имели согласованную рабочую среду.

С этими настройками вы в основном можете делать все ... Например, если вы хотите протестировать метод save() в вашей DAO, просто добавьте новый элемент и убедитесь, что в вашей таблице теперь есть еще один элемент. Кроме того, извлеките этот элемент и сравните его с тем, который вы вставили, он, очевидно, должен быть таким же.

Помните, что вы всегда должны проверять все возможные пути .

2 голосов
/ 29 марта 2011

Я также хотел бы использовать DBUnit , чтобы убедиться, что ваша база данных согласована и независима от тестирования.У них есть статьи о том, как начать и учебник.В блоге IBM DeveloperWorks также есть несколько статей, которые вы, возможно, захотите прочитать.

0 голосов
/ 30 марта 2011

Я думаю, что использование базы данных в памяти часто хорошая идея - для модульного тестирования. Но идеальный вариант - объединить быстрые юнит-тесты с такой базой данных с интеграционными тестами, попадающими в реальную базу данных. Есть небольшие различия между, например, Hypersonic SQL и большинством производственных серверов.

Подумайте об использовании mocks для тестирования вашей обработки ошибок (т.е. смоделируйте объект сеанса Hibernate и сделайте так, чтобы он генерировал исключения для определенных операций)

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