Следует ли проводить интеграционное тестирование DAO на сервере приложений?

У меня разрабатывается трехуровневое приложение, и я создаю интеграционные тесты для DAO на уровне сохраняемости. Когда приложение запускается в Websphere или JBoss, я ожидаю использовать пул соединений и диспетчер транзакций этих серверов приложений. Когда приложение запускается в Tomcat или Jetty, мы будем использовать C3P0 для пула и Atomikos для транзакций.

Из-за этих разных подсистем следует ли тестировать DAO в полностью сконфигурированной среде сервера приложений или мы должны решать эти проблемы при интеграционном тестировании уровня службы? В настоящее время мы планируем настроить простой источник данных JDBC с транзакциями, отличными от JTA (т. е. с локальными ресурсами), для тестирования интеграции DAO, поэтому сервер приложений не задействован... но это заставляет меня задуматься о проблемах окружающей среды, которые мы не раскроем. .


person HDave    schedule 07.06.2010    source источник
comment
Может быть не по теме, но я искал способ использовать транзакции (для модульного тестирования моих DAO вне контейнера, но с базой данных - с простым соединением JDBC), и был бы признателен, если бы вы могли подробно описать, как вы смогли использовать транзакцию без сервер приложений.   -  person Dchucks    schedule 26.03.2012
comment
@dchucks — я создал контекст приложения для весеннего тестирования и настроил свой собственный (на основе Spring) менеджер сущностей JPA для использования Hibernate и инструмента управления транзакциями Atomikos. Если вы хотите получить более подробную информацию, откройте вопрос и ссылку на него отсюда.   -  person HDave    schedule 26.03.2012


Ответы (2)


Помимо тестирования каждого модуля с помощью модульных тестов, интеграционный тест должен тестировать группы модулей.

Я не хочу быть педантичным, но в теории за этим следует системный тест для черного ящика тестирование QA.

Для небольших проектов это может быть неосуществимо.

person stacker    schedule 07.06.2010
comment
Полностью согласен - под интеграционным тестированием я понимаю проверку полного пути от клиента к базе данных. Несмотря на то, что тестирование только сервисного уровня может быть больше, чем просто модульное тестирование. - person Andreas Dolk; 07.06.2010
comment
Мое понимание определения интеграционного теста состоит из двух или более модулей или одного модуля и внешнего ресурса. Однако независимо от определений, должны ли тесты DAO выполняться на сервере приложений? ... или только сквозные тесты? - person HDave; 07.06.2010

Я думаю, что вы на правильном пути с этим ходом мыслей. Если возможно, вам следует настроить сервер непрерывной интеграции (например, Hudson), на котором работает ваша производственная среда. Таким образом, вы можете разрабатывать с довольно высокой степенью уверенности, используя Tomcat и т. д., запуская тесты для вашей локальной установки, и когда вы проверяете свой код, убедитесь, что те же самые тесты выполняются для реальной сделки.

person roufamatic    schedule 07.06.2010
comment
У нас уже есть Hudson и он работает. Думаю, мне просто интересно, следует ли запускать тесты DAO на сервере приложений... или только сквозные тесты. - person HDave; 07.06.2010