我现在准备使用NHibernate来保持我的数据层访问 . 我使用DDD直到那一点,我使用假的单位测试和测试网站 .
我知道我可以使用SchemaExport进行NHibernate具体存储库的单元/集成测试,但是如何生成用于测试站点的模式呢?
我应该在我的测试中创建一个特殊的类来创建模式并插入静态数据,还是应该在创建数据库时在网站启动时生成模式?
我个人喜欢使用一个小型控制台应用程序,它加载所有映射并执行SchemaExport,如下所示:
new SchemaExport(config).Execute(ddlScript => { using (var writer = new StreamWriter(fileName, true)) { writer.Write(ddlScript); writer.Flush(); } }, false, false);
此控制台应用程序作为构建脚本的一个步骤运行,然后由WiX接收DDL脚本文件并包含在MSI包中(在安装时生成整个数据库) .
作为一个简单的场景,您可能会错过使用单元测试 . 只需创建名为 CreateSchema 的单元测试,它将执行schemaexport . 然后在运行其他测试之前运行它 .
我有一个类似的问题here on STO
对于你的完整构建脚本,我会考虑Markus的建议,因为我只是运行你的单元测试
<property name="hbm2ddl.auto">create-drop</property>
在您测试项目的app配置中 - 每次运行所有测试时,这将删除并重新创建您的模式 . 每个单元测试都可以添加测试所需的数据 .
3 回答
我个人喜欢使用一个小型控制台应用程序,它加载所有映射并执行SchemaExport,如下所示:
此控制台应用程序作为构建脚本的一个步骤运行,然后由WiX接收DDL脚本文件并包含在MSI包中(在安装时生成整个数据库) .
作为一个简单的场景,您可能会错过使用单元测试 . 只需创建名为 CreateSchema 的单元测试,它将执行schemaexport . 然后在运行其他测试之前运行它 .
我有一个类似的问题here on STO
对于你的完整构建脚本,我会考虑Markus的建议,因为我只是运行你的单元测试
<property name="hbm2ddl.auto">create-drop</property>
在您测试项目的app配置中 - 每次运行所有测试时,这将删除并重新创建您的模式 . 每个单元测试都可以添加测试所需的数据 .