使用 MYSQL DB,使用 HSQLDB 进行单元测试 = 问题
我最近使用关键字 RLIKE 修改了 MYSQL 查询,但是当我运行使用 HSQLDB 来模拟数据库的单元测试时,它会抛出未知的 SQL 令牌异常。
为了解决这个问题,我目前已经注释掉了这些测试,但希望找到解决方法,以便我可以实际测试我的代码。
我的 google-fu 未能找到解决方案,因为 HSQLDB 文档似乎缺乏,任何帮助将不胜感激。
I recently modified a MYSQL query using the keyword RLIKE
however when I ran the unit test which uses HSQLDB in order to mock a database it throws an unknown SQL token exception.
In order to resolve this currently I have commented out these tests, but would like to find a work around so I can actually test my code.
My google-fu failed to result in a solution as HSQLDB documentation seems lacking, any help would be appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我认为这个故事的寓意是:使用与您打算部署的相同的软件堆栈来运行测试。
如果您在不同的环境中进行测试,您的测试可能会通过,但您的应用程序在生产中会失败 - 这很糟糕。
I think the moral of this story is: Run your tests with the same software stack as you intend to deploy.
If you test in a different environment, your tests might pass but your app fail in production - this is bad.
RLIKE
是一个非标准运算符,HSQL 不支持它。如果您想继续使用 HSQL 进行测试,则必须使用 LIKE 语句或其他标准方法重写查询。或者,您可以使用例如 dbunit 来模拟数据库交互。RLIKE
is a non-standard operator and HSQL does not support it. If you want to continue your testing with HSQL, you will have to rewrite your query using LIKE statements or some other standard method. Alternatively, you could mock the database interaction using e.g. dbunit.HSQLDB 2.0 中的等效函数是
REGEXP_MATCHES ( , )
,用法是
SELECT ... WHERE REGEXP_MATCHES( mystring, regexpr)
最新的 Hibernate 3.5.5 支持 HSLQDB 2.0
The equivalent in HSQLDB 2.0 is the function
REGEXP_MATCHES ( , )
and the usage is
SELECT ... WHERE REGEXP_MATCHES( mystring, regexpr)
The latest Hibernate 3.5.5 supports HSLQDB 2.0