Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 可行的数据库测试_Java_Sql_Database_Unit Testing - Fatal编程技术网

Java 可行的数据库测试

Java 可行的数据库测试,java,sql,database,unit-testing,Java,Sql,Database,Unit Testing,我的任务是调查我们应该如何在一个正在进行的项目中执行测试 我目前正试图决定何时我们应该对SQL语句进行结构化测试。我得出的结论是,最好为get语句设置测试套件,以确保它们返回正确的数据,但不要测试insert、delete或update,因为这可以很容易地通过数据库中的select进行验证,如果缺少某些依赖性,则会抛出foregin键异常 现在,我已经签出了用于执行这些测试的DBunit,但我有几个问题: 1.进行上述试验是否可行?或者,创建这些测试和插入测试数据所花费的时间是否不值得?难道这就

我的任务是调查我们应该如何在一个正在进行的项目中执行测试

我目前正试图决定何时我们应该对SQL语句进行结构化测试。我得出的结论是,最好为get语句设置测试套件,以确保它们返回正确的数据,但不要测试insert、delete或update,因为这可以很容易地通过数据库中的select进行验证,如果缺少某些依赖性,则会抛出foregin键异常

现在,我已经签出了用于执行这些测试的DBunit,但我有几个问题:

1.进行上述试验是否可行?或者,创建这些测试和插入测试数据所花费的时间是否不值得?难道这就足够让开发人员测试这个临时的吗

2.为每个测试确定合适的测试数据似乎很耗时。如果让预期的数据由DBunit生成,那么测试数据应该手动插入到DBunit所需的平面xml文件中。您依赖于获取该数据的SQL。是这样吗

3.是否有更好、更简单的方法来执行数据库测试以验证SQL语句


该项目将使用Hibernate、Java和MS SQL Server,您可以使用dbunit,也可以在每个测试中以编程方式构建db内容。重要的部分是让测试框架(例如spring测试)在每次测试后进行回滚。一旦您设置了环境,就可以很容易地在单个事务中测试DML get、insert、delete

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

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