可行的数据库测试

时间:2013-03-20 15:08:05

标签: java sql database unit-testing

我被分配了调查如何在一个升级项目中执行测试的任务。

我目前正在尝试决定是否应该为我们的SQL语句进行结构化测试。我得出的结论是,为“get”语句提供测试套件以确保它们返回正确的数据但不测试插入,删除或更新可能是一个好主意,因为这可以很容易地通过如果缺少某些依赖性,则在DB和foregin键中选择异常将被抛出。

现在,我一直在检查DBunit用于执行这些测试,但我有几个遗言:

1.如上所述进行测试是否可行?或者是时候创建这些测试并插入测试数据是不值得的?也许这足以让开发人员对此进行临时测试?

2.似乎为每个测试确定适当的测试数据可能会耗费大量时间。测试数据应手动插入DBunit所需的flat-xml文件中(如果您让DBunit生成预期数据,则您依赖于获取该数据的SQL)。是这种情况吗?

3.有没有更好,更简单的方法来执行数据库测试来验证SQL语句?

该项目将使用Hibernate,Java和MS SQL Server

1 个答案:

答案 0 :(得分:0)

您可以使用dbunit,也可以以编程方式构建db内容(在每个测试中)。重要的是让测试框架(例如弹簧测试)在每次测试后进行回滚。一旦你设置了环境,就可以很容易地在单个事务中测试DML(获取,插入,删除)。

如果要测试DDL(某些数据库在事务之外执行该操作),则必须在每次测试之前(例如在内存db中)从头开始手动回滚或创建数据库。通常不需要DDL测试,因为hibernate执行验证部分

是的:你应该测试你的查询 - 花一些时间准备环境是值得的