Просто удалите спецификацию динамического исключения. Это все, что вам нужно сделать.
C ++ не является Java; в C ++ предполагается, что все функции (на уровне языка) генерируют что-либо, если только они не помечены noexcept
. Таким образом, если вы удалите спецификацию исключения, она будет работать точно так же, как и раньше.
Я использую Шаблон Репозитория для выполнения операций Базы данных, и каждый раз, когда я запускаю свои Тесты, я просто запускаю высокоуровневые тесты который просто Насмешка Репозиторий (с RhinoMocks).
У меня есть отдельный комплект тестов, который явно тестирует уровень Repository и отображения NHibernate. И они обычно не изменяются так же как бизнес и gui логика выше их.
Тем путем я получаю очень быстрые UnitTests, которые никогда не поражают DB и все еще хорошо протестированный Слой DB
Доступ к данным поблочного тестирования не возможен, но Вы можете интеграция тестировать его. Я создаю интеграционный тест на свой доступ к данным в отдельном проекте от моих модульных тестов. Я только выполняю (медленные) интеграционные тесты, когда я изменяю что-то в репозиториях, отображении или схеме базы данных. Поскольку интеграционные тесты не смешаны с модульными тестами, я могу все еще выполнить модульные тесты приблизительно 100 раз в день без того, чтобы быть раздражаемым.
Вы попытались изменить некоторые значения по умолчанию в дополнительных свойствах конфигурации? Замедление, скорее всего, связано с определенной оптимизацией nhibernate, делает с генерацией кода.
http://nhibernate.info/doc/nh/en/index.html#configuration-optional
Это походит в дб памяти, будет самым быстрым способом протестировать Ваш слой данных. Это также кажется, после того как Вы начинаете тестировать свой слой данных, который Вы перемещаете немного вне области модульного теста.