1

我正在使用运行几个测试项目的自定义工作流程。其中一些项目使用数据库(我知道这应该在单独的上下文中,但我无法更改测试代码)来运行一些测试用例。

我不知道它是否相关,但我使用 XUnit 作为测试框架并使用 nhibernate 作为 ORM。

我所做的是创建一个自定义活动,该活动在 SQLEXPRESS 服务器中为测试项目设置所有必要的数据库并临时附加它们,该活动还修改了指向我创建的临时数据库的 .config 文件。到现在为止还挺好。

这里的问题是我不想拥有不幸过时的 .mdf 模板(由于逻辑数据库更改)并且必须手动更新。

我面临的另一个问题是,模板不仅破坏了这个过程的自动化,而且从构建定义中访问这些项目的开发人员也无法轻松地在他们的机器上本地启动测试。他们必须获取 MDF、挂载数据库、配置测试项目并运行。太多的操作无法让开发人员有意愿对他们的代码进行单元测试。

最好的方法是什么,或者有人对我应该从哪里开始寻找可能的解决方案有任何建议吗?

谢谢!

4

1 回答 1

1

在我看来,在本地很好地测试数据库的唯一方法是模拟它们或使用包含一些简单数据的嵌入式数据库。

实际上,这两种方法都需要您的开发团队的工作。

我强烈建议模拟数据库,因为它不需要在运行测试之前进行备份和恢复数据库。如果您使用代码模拟数据库,测试将几乎立即运行,您将无需管理任何外部依赖项。

您希望您的开发人员找到一个可以模拟的具有 nhibernate 的现有接口(Moq 是一个很好的模拟库 - http://code.google.com/p/moq/)或在数据访问级别引入接口,所以他们可以伪造数据库调用。

我认为嵌入式方法在这里非常不合适。

于 2013-01-30T15:37:59.083 回答