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

无数据库的nunit测试

  •  2
  • eomeroff  · 技术社区  · 16 年前

    如何在没有数据库的情况下测试代码(TDD)的标准CRUD操作。是否可以实现这样的隔离级别,以便我的代码独立于数据库。

    多谢各位。

    4 回复  |  直到 16 年前
        1
  •  1
  •   Martin R-L    16 年前

    Q1:

    如何测试我的代码(TDD) 标准积垢操作 有数据库。

    我看到帖子上有nunit标签,所以我假设是.NET上下文。考虑到这一点,我个人已经在一个项目中成功地使用了几个月的sqlite作为内存数据库(以及nhibernate和常见的DDD模式)。

    Q2:

    能达到这样的水平吗 使我的代码 独立于数据库。

    我认为编写完全独立于数据库的代码是不可能的,但是nhibernate占了我的95%(但是这个数字很大程度上取决于您的具体上下文)。

    此外,有了良好的数据访问模式,例如“存储库”和“工作单元”,其余的代码库就可以100%地与数据库无关。其他数据源也一样,例如csv和xml文件。

        2
  •  4
  •   CaffGeek    16 年前

    是的。编写一个接口,其中包含对数据库的所有调用。

    然后创建两个实现接口的类。

    其中一个可以真正访问您的数据库。

    另一个,只是假装,这是一个模拟实现。

        3
  •  2
  •   AutomatedTester    16 年前

    像犀牛模型一样,使用伪造来模拟数据访问。这样,当您的测试运行时,它们将与假的进行交互,而不是一直向下进入数据库。

        4
  •  1
  •   Dror Helper    16 年前

    您可以使用模拟对象测试业务层(以及一些表示层)。

    使用mocks/fake,这样就不会从dal调用数据库,而是调用一个假的类,并返回一个预定义的值。

    为了测试DAL,您需要实际的数据库 . 您可以使用单元测试框架在数据库上运行简单的CRUD。创建一个简单的测试数据库和一个还原点,并使用单元测试框架的设置和拆卸来确保数据库处于预期状态。