代码之家  ›  专栏  ›  技术社区  ›  Jason

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

  •  2
  • Jason  · 技术社区  · 17 年前

    我们目前使用亚音速作为我们的持久层,因为它很轻,但也因为它允许我们输入测试数据,这样我们的DAL就可以在不影响数据库的情况下进行测试。我非常喜欢亚音速。然而,由于我们也遇到了亚音速的其他问题,我现在正在寻找一个替代方案,而我们的项目还很年轻。长话短说,有没有另一个.NET持久性框架允许开发人员在测试数据中进行细分?

    3 回复  |  直到 16 年前
        1
  •  1
  •   elder_george    17 年前

    Afaik、Hnibernate不支持此功能,但如果将测试数据库配置为“内存中”模式,则可以实现此功能。sqlite支持此模式。

    Here 是配置和测试的示例。

        2
  •  0
  •   Michael Maddox    17 年前

    我怀疑您是否会发现这个特定的功能是另一个.NET ORM,但没有理由不能自己编写代码。如果你想要一个与你的项目相称的ORM,NHibernate是最好的选择。您可能想探讨一下通过IronRuby在.NET上运行的RubyForms,但我不相信您会找到一个可行的解决方案。

        3
  •  0
  •   Jason    16 年前

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

    我们的理由如下:

    如果我们只对存储库层进行单元测试,就永远不会知道如何在数据库上执行查询。例如,如果我们使用像sqlite这样的内存解决方案,那么我们的所有规范都可能在开发时通过,但在部署到生产环境时可能会失败,因为1)每个nhibernate数据提供程序的实现方式不同,2)每个产品(sqlite vs ms-sql-server vs-oracle)实现数据类型、T-sql等的方式不同。