2013-01-14 140 views
3

我有類似HQL查詢工廠,它生成純字符串HQL查詢。如何通過實際執行查詢來完成對某些語法錯誤的單元測試,而不對數據庫進行集成測試?單元測試HQL查詢

最好的選擇是調用一些神奇的VerifyHql()方法,或者可能在某處使用它並捕獲一些有意義的解析異常或其他東西。

回答

3

測試沒有數據庫查詢的查詢沒什麼意義,所以應該使用集成測試來測試這些查詢。但是,您可以use an in memory SQLite database而不是打到真正的服務器。有一個NuGet SQLite package可用。

+0

傑米,你明白了! Denis,你可以下載NHibernate代碼並觀察'HQL'測試。 (在執行任何'HQL'測試之前,測試*數據*在數據庫中刷新......) –

+0

嗯,我仍然認爲它在某些情況下是有意義的。一個例子是測試動態構建的非常複雜的HQL查詢(很少見,但我必須處理非常複雜的查詢)。雖然這個查詢的測試數量非常大,並且對內存數據庫進行了測試,但我仍然會看到一些快速語法測試的價值。爲什麼我會說爲了檢查映射的完整性而進行的測試也很有價值,而沒有針對每個映射的細節進行集成測試,這一點就會變得相同。 –