2011-03-15 23 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本身。 –