2010-08-20 30 views
0

我最近使用關鍵字RLIKE修改了MYSQL查詢,但是當我運行使用HSQLDB的單元測試來模擬數據庫時,它會拋出未知的SQL令牌異常。使用MYSQL DB,使用HSQLDB進行單元測試=問題

爲了解決這個問題,我已經註釋掉了這些測試,但是希望找到解決辦法,以便我可以真正測試我的代碼。

我的谷歌福沒有導致解決方案,因爲HSQLDB文檔似乎缺乏,任何幫助,將不勝感激。

回答

2

我認爲這個故事的寓意是:用您打算部署的相同軟件堆棧運行您的測試。

如果您在不同的環境中測試,您的測試可能會通過,但您的應用程序在生產中失敗 - 這很糟糕。

+0

我認爲這取決於。在構建構建概念時,有時需要測試設置與生產不同(例如速度原因,或者沒有外部產品集成沙箱)。藝術是在方便的測試設置和測試「正確的事物」之間找到一個很好的折衷方案。 – 2010-08-21 12:38:22

+1

這不會是客戶第一次決定改變他們的數據庫。我儘量遠離查詢中的非標準功能。 – jackrabbit 2010-08-22 06:19:54

+0

客戶不會「決定他們想要更改數據庫」。數據庫的選擇是應用程序設計人員負責的事情,客戶不能更改數據庫,除非有很好的理由,並且會對他們造成重大的相關成本。如果應用程序被多個客戶使用,則一個客戶可能根本無法強制更改數據庫。數據庫應用程序完全依賴於他們測試的供應商,沒有一個理智的人想要支持1個以上的供應商。 – MarkR 2010-08-22 20:44:59

1

RLIKE是一個非標準的操作符,HSQL不支持它。如果您想繼續使用HSQL進行測試,則必須使用LIKE語句或其他標準方法重寫您的查詢。或者,你可以用例如模擬數據庫交互來模擬。 dbunit

0

在HSQLDB 2.0當量是函數

REGEXP_MATCHES(,)

和用法是

SELECT ... WHERE REGEXP_MATCHES(MyString的,regexpr)

最新休眠3.5.5支持HSLQDB 2.0