2010-06-22 50 views
0

我一直在找一些假設數據庫查詢的結果是按特定順序執行的單元測試,但是運行的查詢不包含order by子句。隨機化數據庫行結果

我想找到更多的這些單元測試,以便我可以檢查測試在其假設中是否存在錯誤,或者代碼在缺乏指定順序時出錯。我使用的是java,junit,spring,hibernate,dbunit,jdbc和postgresql。

我的一個想法是攔截測試查詢的某個地方,如果查詢不包含order by子句,則捕獲所有結果並以隨機順序返回。

哪裏可以攔截和檢查查詢最簡單的地方?

是否有其他簡單的方法來識別這些測試?

回答

1

你可以看看擴展Hibernate的EmptyInterceptor,特別是onPrepareStatement方法。如果作爲參數傳遞的sql查詢不包含order by子句,則可以嘗試向其添加order by random()

+0

如果使用Spring的LocalSessionFactoryBean配置sessionFactory,我會嘗試製作一個特定於測試的配置,在其中添加攔截器(entityInterceptor屬性)。 – 2010-06-22 03:58:13

+0

謝謝,得到了工作。現在要處理這些錯誤(例如,篩選出不同的查詢) – 2010-06-22 04:03:43