代码之家  ›  专栏  ›  技术社区  ›  Eric Smith

用于单元测试的内存DBMS

  •  7
  • Eric Smith  · 技术社区  · 16 年前

    我正在寻找令人满意的选项来对我的.NETDAL类进行单元测试;因为它们是DAL类,所以直接使用ADO.NET访问数据库。目前,我使用MSSQL数据库的一个实例进行测试,但我想知道有哪些更快的选项——因为单元测试需要尽可能快地运行,内存中的解决方案将是理想的。

    6 回复  |  直到 16 年前
        1
  •  3
  •   ShuggyCoUk    16 年前

    鉴于你声明:

    我还应该提到,我已经打成平局 将使用微软的

    然后使用SQLServerCompactEdition可以很好地满足您的需要。 它不会完全在内存中运行,但可以在只读模式下运行(在这种模式下,不会对主数据库文件进行编辑,因此可以同时由多个测试使用)

    尽管如此,我还是使用了SqlServer Compact Edition作为正确的SqlServer数据库的几乎完全替代品,并取得了良好的效果。

        2
  •  2
  •   joshua.ewer    16 年前

    SQLite

    诚然,@TopBanana在一些不使用“实际”数据库的问题上是正确的。然而,内存中的RDBMS非常适合于那些您想要快速运行的测试(例如,增量或CI构建的签入测试)。

    另一个巨大的优势是,您不必担心安装或拆卸。由于开发人员A破坏了您的开发数据库,导致您的签入失败是非常低效的;-)

        3
  •  1
  •   dmajkic    16 年前

    在此基础上创建测试数据库可能会很有趣。

        4
  •  1
  •   Sam Saffron James Allen    15 年前

    真正地 单元测试的瓶颈是什么?

    我的意思是:

    1. 您是否分析过单元测试(使用类似于SQL Profiler的工具)。他们都慢吗?有几个慢吗?为什么?
    2. 你的单元测试做得太多了吗?安装和拆卸代码是否太重?
    3. 如果SQL是您的瓶颈,您是否考虑过 mocking framework ,因此您模拟了所有SQL调用。
        5
  •  1
  •   Jens Schauder    13 年前

    • 确保真正的单元测试不涉及数据库,而是使用模拟服务

    • 在实际使用Oracle功能的测试中,我们使用了在RAM光盘上运行的普通Oracle实例。

    这使得测试速度大大加快。

        6
  •  0
  •   James L    16 年前

    我建议使用与生产相同的数据库进行单元测试。当你调试一个实时问题时,你真的不需要有什么奇怪的差别。