Проверка сопоставлений NHibernate с помощью NDBUnit

В настоящее время я использую NHibernate в проекте и использую NDBUnit для заполнения БД данными для моих модульных тестов. Я бы хотел проверить XML, используемый NDBUnit, на соответствие экземплярам класса, возвращаемым NHibernate при загрузке данных.

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


person user596162    schedule 15.03.2011    source источник


Ответы (1)


Ознакомьтесь со спецификацией PersistenceSpecification в Fluent NHibernate. В этом классе нет ничего, что полагалось бы на Fluent NHibernate, и я использовал его раньше при тестировании старых простых файлов NHibernate hbm.xml.

http://wiki.fluentnhibernate.org/Persistence_specification_testing

Например, вы можете написать такие тесты:

[Test]
public void CanCorrectlyMapEmployee()
{
    new PersistenceSpecification<Employee>(session)
        .CheckProperty(c => c.Id, 1)
        .CheckProperty(c => c.FirstName, "John")
        .CheckProperty(c => c.LastName, "Doe")
        .VerifyTheMappings();
}

Настоятельно рекомендуется.

person James Kovacs    schedule 15.03.2011
comment
Это может сработать, если вы используете установленную базу данных, однако, если вы используете базу данных в памяти (например, sqlite), что я рекомендую для интеграционных тестов, я не думаю, что этот тест будет особенно полезным. Причина этого в том, что база данных в памяти будет создана «из» сопоставлений, и тест для проверки того, можете ли вы вставить запись, просто тестирует сам NHibernate ORM. - person Ryan.Bartsch; 24.07.2014