mrb*_*lah 6 mbunit unit-testing
单元测试时,在测试CRUD操作时是否必须使用数据库?sql lite可以帮忙吗?你是否必须以某种方式在内存中创建数据库?
我正在使用mbunit.
Rob*_*nik 12
不.集成实际的数据库将是集成测试.不是单元测试.
是的,如果你不能以任何其他方式抽象(模拟)你的DAL/DAO,你可以使用任何内存数据库,如SQLite或MS SQL Compact.
考虑到这一点,我必须指出,单元测试可能一直到DAL,但不是DAL本身.DAL必须在集成测试中使用某种实际DB进行测试.
Mar*_*ann 12
与所有复杂的问题一样,答案是:它取决于:)
通常,您应该在接口后面隐藏数据访问层,以便您可以在不使用数据库的情况下测试应用程序的其余部分,但是如果您想测试数据访问实现本身呢?
在某些情况下,有些人认为这是多余的,因为他们大多使用声明性数据访问技术,如ORM.
在其他情况下,数据访问组件本身可能包含您可能要测试的一些逻辑.这可能是一个完全相关的事情,但你需要数据库来做到这一点.
有些人认为这是集成测试而不是单元测试,但在我的书中,你所谓的并不重要 - 最重要的是你从全自动测试中获得价值,你绝对可以使用单元测试框架来驱动这些测试.
前段时间我写了关于如何在SQL Server上执行此操作的内容.要记住的最重要的事情是避免使用某些"代表性数据"创建通用夹具的诱惑,并尝试在所有测试中重复使用它.相反,您应该在每个测试中填写数据并在之后进行清理.