Тесты интеграции Spring.net + Nhibernate проходят, когда они не должны - PullRequest
0 голосов
/ 24 сентября 2008

Я использую Spring.net с NHiberante (HibernateTemplate) для реализации моих DAO.

У меня также есть несколько интеграционных тестов, которые расширяются от 'AbstractTransactionalDbProviderSpringContextTests'.

DI работает нормально, и все тесты проходят, НО иногда они проходят , даже если они не должны .

Например, если мои файлы hbm.xml имеют такую ​​ошибку:

<class name="Confluence.Domain.User" table="THIS TABLE DOES NOT EXIST">

Тесты не пройдены, но если ошибка такая:

<many-to-many class="Confluence.Domain.User" column="THIS COLUMN DOES NOT EXIST"/>

тесты проходят незаметно, скрывая ошибку.

Я тестирую его с помощью SetComplete () и проверяю изменения в БД, но я думаю, что вся идея такого рода тестов не в этом.

Может кто-нибудь сказать мне, как исправить эту проблему?

Большое спасибо!

@ Ben: Если мне действительно нужно выполнить сценарии SQL, чтобы посмотреть, работают ли они, в чем преимущество такого рода тестов Spring?

Ответы [ 2 ]

2 голосов
/ 30 декабря 2008

При тестировании ваших DAO на основе NH вы должны очистить сессию, чтобы база данных обновлялась новой информацией, но все еще выполнялась откат, как и раньше. Как это сделать, объясняется здесь - http://forum.springframework.net/showthread.php?t=5246 Я добавил это в справочные документы. Надеюсь, это поможет.

Ура, Mark

1 голос
/ 24 сентября 2008

Если в вашем отображении есть синтаксическая ошибка, то NHibernate завершится ошибкой в ​​config.BuildSessionFactory ()

Но для объектов базы данных с ошибками / несуществования, единственный способ узнать NHibernate - это запустить запрос ... Таким образом, вы можете использовать некоторые интеграционные тесты для проверки вставки / выбора на одной сущности, чтобы убедиться в этом. работы.

Не уверен, что это имеет отношение к Spring.NET, хотя.

...