【发布时间】:2010-12-10 13:22:58
【问题描述】:
在我的简单项目中,我已经准备好对 DAL 进行单元测试了。
我基本上有一个名为 FooDataAccess 的类,它有几个非常简单的函数,让我们说其中 3 个是这样的:
int InsertFoo(string fooName)
void UpdateFoo(int fooID, string fooName)
void InsertFoosDepedency(int fooID, string someValue)
我所做的是 - 在我的单元测试项目中放入 4 个 SQL 脚本,最后一个作为嵌入式资源。
1) 创建(单元测试)数据库脚本,2) 创建对象脚本,3) 插入查找表值和 4) 删除除查找表值之外的所有值
这个想法是,任何第一次使用该项目的人都应该手动运行脚本 1-3 作为一次性设置。然后在每个单元测试启动时执行脚本 #4...(在小型应用程序中,您甚至可以在测试级别运行所有这些)
好的,到目前为止一切都很好......
所以我有我的单元测试数据库设置,作为一个空的石板。测试第一个函数 InsertFoo() 显然非常简单。我调用该函数,然后只调用 Assert(ExecuteSQL("select count(*) from foo") > 1)、Assert(ExecuteSQL("select fooName from t_foo") = expected)) 等。
我有点卡住的是那些需要依赖的地方,比如我的例子中的第三个函数,甚至是更新。
暂时放弃我的测试范围内的所有外键约束是否有意义?否则,为了对 InsertFoosDepedency(int fooID, string someValue) 函数进行单元测试,我必须先执行一些任意 sql(手动向 FOO 表插入一条记录并返回 FooID)...
或者,我应该只做后者吗?
非常感谢任何和所有反馈。
更新:它使用内联 SQL 干净地创建依赖项。我想我只是在寻找对这种用于单元测试 DAL 的方法的 cmets 和批评。再次感谢
【问题讨论】:
标签: unit-testing data-access-layer