2011-03-15 52 views
1

我目前在一個項目中使用NHibernate,並使用NDBUnit爲我的單元測試填充數據庫。我想要做的是在加載數據時驗證NDBUnit對NHibernate返回的類實例使用的XML。使用NDBUnit驗證NHibernate映射

好像我可以在類上使用反射來獲取所有屬性,然後在NDBUnit XML數據集中查找這些列值。我只是不確定我是否在重新發明輪子,或者有更好的選擇來驗證我所有的NHibernate映射是否正確?

回答

0

查看Fluent NHibernate中的PersistenceSpecification。這個類沒有任何依賴於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(); 
} 

強烈推薦。

+0

如果您使用已安裝的數據庫,這可能會有效,但如果您使用內存數據庫(例如sqlite),這是我主張進行集成測試的,我不認爲這個測試會特別的有用。原因在於內存數據庫將從映射創建,並且測試是否可以插入記錄只是測試NHibernate ORM本身。 –