我被分配了调查如何在一个升级项目中执行测试的任务。
我目前正在尝试决定是否应该为我们的SQL语句进行结构化测试。我得出的结论是,为“get”语句提供测试套件以确保它们返回正确的数据但不测试插入,删除或更新可能是一个好主意,因为这可以很容易地通过如果缺少某些依赖性,则在DB和foregin键中选择异常将被抛出。
现在,我一直在检查DBunit
用于执行这些测试,但我有几个遗言:
1.如上所述进行测试是否可行?或者是时候创建这些测试并插入测试数据是不值得的?也许这足以让开发人员对此进行临时测试?
2.似乎为每个测试确定适当的测试数据可能会耗费大量时间。测试数据应手动插入DBunit所需的flat-xml文件中(如果您让DBunit生成预期数据,则您依赖于获取该数据的SQL)。是这种情况吗?
3.有没有更好,更简单的方法来执行数据库测试来验证SQL语句?
该项目将使用Hibernate,Java和MS SQL Server
答案 0 :(得分:0)
您可以使用dbunit,也可以以编程方式构建db内容(在每个测试中)。重要的是让测试框架(例如弹簧测试)在每次测试后进行回滚。一旦你设置了环境,就可以很容易地在单个事务中测试DML(获取,插入,删除)。
如果要测试DDL(某些数据库在事务之外执行该操作),则必须在每次测试之前(例如在内存db中)从头开始手动回滚或创建数据库。通常不需要DDL测试,因为hibernate执行验证部分
是的:你应该测试你的查询 - 花一些时间准备环境是值得的