如何单元测试数据库类

Eri*_*ric 5 c# database unit-testing

这可能已被多次询问,但在这里:

我有一个充满数据库连接的类

打开连接
查询db
读取值
关闭连接

我该如何对这些东西进行单元测试?

我需要创建一个假数据库吗?我想我可以模拟MySql类(对于c#),但这也是很多工作.

有些陈述是"INSERT INTO",我该怎么办呢?

jga*_*fin 7

难以测试的东西通常紧密耦合或不遵循单一责任原则.

首先.拆分数据层.查看存储库模式.每个实体(表或视图)都应该拥有自己的类获取数据.

使用数据接口而不是特定的驱动程序实现:IDbConnection而不是SqlConnection.使用DbProviderFactory得到适当的连接实现.然后connection.CreateCommand()用来获取命令等

尽一切努力使测试数据层变得更加容易.请记住,数据库不应该有任何逻辑.它的唯一目的是从数据源加载数据.

但是如果你不想改变东西:对数据库工作是最简单的方法.删除所有数据并在每次测试之前插入新的测试数据(以删除上一次测试期间的任何更改).