Как использовать шаблон отката с транзакциями NHibernate? - PullRequest
0 голосов
/ 16 мая 2011

Я бы хотел использовать шаблон отката для тестирования моих сервисов.На самом деле это логические сервисы, которые управляют транзакциями и обрабатывают весь доступ к репозиторию, вызываемый пользовательским интерфейсом Winform.Репозитории используют NHibernate для операций с базой данных.

Учитывая NHibernate не поддерживает вложенные транзакции , он не работает, чтобы начать транзакцию в тестовой настройке и выполнить откат в конце.Мои транзакции, выполненные в промежутке, не были откачены.

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

Есть ли лучший способ добиться этого?Любые предложения или указания приветствуются.

1 Ответ

1 голос
/ 16 мая 2011

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

Основная идея заключается в том, что у вас есть какая-то база-линейные снимки или сценарий базовой установки для вашей базы данных, которые вы запускаете на своем тестовом сервере ежедневно, ежечасно или всякий раз, когда тесты выполняются - что угодно.То, как мы справились с этим, состояло в том, чтобы метод SetUp сбрасывался до базовых уровней, вызывая скрипт;Затем мы выполнили бы все наши тесты и во время процедуры TearDown сбросились бы до базовых значений (если нам было нужно).

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

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