Как NHibernate может сделать модульный тест простым? - PullRequest
0 голосов
/ 05 июня 2011

NHibernate использует файлы XML для сопоставления классов с таблицами в базе данных. Как модульное тестирование файлов XML может быть проще, чем программный код (C #, JAVA и т. Д.)? Предполагает ли NHibernate, что отображаемые XML-файлы автоматически совершенны и нет необходимости их проверять?

Ответы [ 4 ]

1 голос
/ 05 июня 2011

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

0 голосов
/ 18 июля 2011

Я не уверен, может ли это решить вашу проблему или нет ... в основном, если вы используете nhibernate, то вам лучше использовать свободный nhibernate.который фактически создает прокси-классы, используя POCO вместо отображений hbm.xml, что делает вашу жизнь намного проще для рефакторинга ..

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

вот пример

[TestFixtureSetUp]
    public void CanMapCorrectlyStudent()
    {
        using (ISession session = PersistanceManager.OpenSession())
        {
            new PersistenceSpecification<Student>(session)  
                .CheckProperty(c=>c.Studentid,5)
                .CheckProperty(c => c.Name, "John")
                .CheckProperty(c=>c.Age , 24)                                        
                .CheckReference(c=>c.Department,new Department { Dept_id = 1 , Dept_name="MCA" })
                .VerifyTheMappings();
        }
    }

выСоответствующий пример можно найти в вики nhibernate. Установите testdriven.net для visual studio, щелкните правой кнопкой мыши упомянутое выше тело функции и нажмите Run Test.он автоматически запускает тест, освобождая вас от всех трудностей, связанных с ручным кодированием, и перепроверяет тесты

0 голосов
/ 05 июня 2011

За последние несколько лет я выбрал 3 различных подхода:

1 - не проводите никаких испытаний.При развертывании на тестовом сервере выясните, правильны ли сопоставления.Это не идеально.

2 - я написал некоторый код, который, используя отражение, нашел все мои отображенные POCO и автоматически создал бы их экземпляры (это было довольно рекурсивно, поэтому он даже исследовал внешние ключи), а затемверните их из БД, чтобы проверить правильность сохранения всех свойств.

3 - Написал интеграционные тесты для моих веб-сервисов.Я позволил этим тестам использовать код веб-сервисов, который дошел до БД.Это выявило любые проблемы с отображением.

РЕДАКТИРОВАТЬ - Еще одна вещь, которую я упомянул, это то, что у NHibnerate есть хорошая функция, позволяющая использовать базу данных в памяти.Это может быть полезно для тестов, где вы не хотите издеваться над NHibnerate, но не хотите, чтобы ваши тесты зависели от (реального) сервера базы данных.

0 голосов
/ 05 июня 2011

Модульное тестирование вашей DAO, которая инкапсулирует ваши запросы NHibernate, чтобы убедиться, что ваша конфигурация / сопоставления NHibernate верны.

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