支持测试数据的.NET持久性框架

时间:2009-09-23 15:51:14

标签: .net unit-testing orm persistence

我们目前正在使用SubSonic作为我们的持久层,因为它很轻,但也因为它允许我们输入测试数据,所以我们的DAL可以在不命中数据库的情况下进行测试。我非常喜欢SubSonic。但是,因为我们也遇到了SubSonic的其他问题,我现在正在寻找替代方案,而我们的项目还很年轻。简而言之,是否有另一个.NET持久性框架允许开发人员测试数据?

3 个答案:

答案 0 :(得分:1)

AFAIK,hNibernate不支持此功能,但如果您将测试DB配置为在“内存中”模式下工作,则可以实现。 SQLite支持这种模式。

Here是配置和测试的示例。

答案 1 :(得分:0)

我怀疑您会发现该特定功能是另一个.NET ORM,但没有理由不能自己编写代码。如果你想要一个随项目扩展的ORM,NHibernate是最好的选择。您可能想要浏览通过IronRuby在.NET上运行的Ruby ORM,但我不相信您会使用一个可行的解决方案。

答案 2 :(得分:0)

更新:经过漫长的搜索,我们最终切换到NHibernate作为我们的持久层并更改了存储库层的单元测试理念。我们得出结论,我们将切换到集成测试存储库层,同时仍然对所有其他层进行单元测试。

以下是我们的理由:

如果我们只对存储库层进行单元测试,我们永远不会知道如何在数据库上执行查询。例如,如果我们使用像SQLite这样的内存解决方案,我们的所有规范都可能在开发时通过,但是一旦我们部署到生产环境可能会失败,因为1)每个NHibernate数据提供程序的实现方式不同2)差异每个产品(SQLite与MS MS SQL Server与Oracle)如何实现数据类型,T-SQL等