1
19
使用内存/Java数据库进行测试。这将确保测试更接近真实世界,而不是试图在测试中“抽象”掉数据库。可能这样的测试也更容易编写和维护。另一方面,您可能希望在测试中“抽象”掉的是UI,因为UI测试通常很难自动化。 您发布的Oracle语法与H2数据库配合得很好(我刚刚测试过),因此H2似乎比HSQLDB更支持Oracle语法。免责声明:我是H2的作者之一。如果有些东西不起作用,请把它贴在H2邮件列表上。 无论如何,您应该在版本控制系统中拥有数据库的DDL语句。您也可以使用这些脚本进行测试。可能您还需要支持多个模式版本—在这种情况下,您可以编写版本更新脚本(alter table…)。使用Java数据库,您也可以测试这些。 顺便说一下,在使用H2或HSQLDB时,不一定需要使用内存模式。这两个数据库都很快,即使您将数据持久化。而且它们很容易安装(只是一个jar文件),而且比Oracle需要的内存要少得多。 |
2
5
最新的hsqldb2.0.1通过语法兼容性标志支持DUAL、ROWNUM、NEXTVAL和CURRVAL的ORACLE语法,sql.syntax\u ora=真. 以相同的方式,字符串与空字符串的串联以及唯一约束中对空的限制也用其他标志处理。大多数ORACLE函数,如TO\u CHAR、TO\u DATE、NVL等都已经内置。
将类型编号创建为数字 设置标志后,下一个快照将允许NUMBER(N)和ORACLE类型兼容性的其他方面。 下载自 http://hsqldb.org/support/ [更新:]10月4日发布的快照将大多数特定于Oracle的类型转换为ANSI SQL类型。hsqldb2.0还支持与Oracle相同的ansisql间隔类型和日期/时间戳算法。 |
3
2
你的单元测试是为了什么? 如果他们测试ddl和存储过程是否正常工作,那么您应该编写与Oracle“更接近”的测试:要么不使用Java代码,要么根本不使用Spring和其他优秀的web接口,将重点放在db上。
如果您想作为一个整体来测试工作(这与模块化开发和测试原则背道而驰),那么您可以虚拟化您的数据库并在该实例上进行测试,而不必冒做一些不可逆的修改的风险。 |
4
1
只要您的测试在完成后进行了清理(您似乎已经知道如何设置),那么针对真实的数据库实例运行测试并没有什么问题。事实上,这是我通常喜欢的方法,因为您将测试尽可能接近生产的东西。
|
Sambhaji Sawant · 关于Apache Ignite监控 7 年前 |
Neron · Ignite CacheStore上的Sql查询 8 年前 |
Manish Mishra · Future[WriteResult]在使用scalatest embedMongo和reactivemongo scala驱动程序版本0.11.5时失败,出现ArrayOutOfBounds异常 9 年前 |
Acewin · HSQLDB中的存储过程。通过SQLTool创建 9 年前 |
user3726374 · HSQLDB持久存储在内存数据库中 9 年前 |