2009-07-15 53 views
1

我现在准备好使用NHibernate来坚持我的数据层访问。直到那时我才使用DDD,并使用假单元测试和测试网站。使用NHibernate为生产生成模式的最佳实践

我知道我可以使用SchemaExport对我的NHibernate具体存储库进行单元/集成测试,但是应该如何生成用于测试站点的模式?

我应该在创建模式并插入静态数据的测试中创建一个特殊类,或者如果数据库未创建,我应该在启动站点时生成模式吗?

回答

3

我个人喜欢用它加载所有映射和下面执行的SchemaExport一个小型控制台应用程序:

new SchemaExport(config).Execute(ddlScript => { 
    using (var writer = new StreamWriter(fileName, true)) 
    { 
     writer.Write(ddlScript); 
     writer.Flush(); 
    } 
}, false, false); 

该控制台应用程序运行,为的步骤构建脚本和DDL脚本文件会被WiX提取出来并包含在MSI包(它会在安装时生成整个数据库)中。

0

作为一个简单的场景,你可能会错过使用单元测试。只需创建名为CreateSchema的单元测试,它将执行schemaexport。然后在运行其他测试之前运行它。

我有一个类似的问题here on STO

+0

我的问题是不是为测试而是为生产站点创建模式。 – 2009-07-16 12:19:33

0

为您全方位构建脚本我与马库斯的建议去,只是在运行单元测试 我把

<property name="hbm2ddl.auto">create-drop</property>

在应用程序配置你的测试项目 - 这将下降,每次运行所有测试时重新创建您的模式。每个单元测试都可以添加它需要测试的数据。