2011-07-29 46 views
1

我從我Service類方法mDataVO.getMarketData()其中mDataVOmarketDataVO一個對象,它是用於存儲不同類型的數據的值對象獲取數據的列表從數據庫。JUnit測試的情況下從數據庫測試的數據是最新的,而不是陳舊

在我的getMarketData()裏面,我製作了一個Hibernate Query從數據庫中獲取數據。現在我的目標是在我的單元測試類中對這些數據進行單元測試,並確保獲得正確的數據,並且方法調用返回的數據不會過時,並且與數據庫中的最新值相同。

爲此在我的單元測試類中,我使用了相同的Hibernate Query,所以我現在得到相同的一組數據,這不能解決單元測試的目的,因爲我只是比較通過運行相同查詢獲得的相同數據在數據庫中。我不確定這種情況如何進行單元測試。

我是否遺漏了單元測試的要點或未在我的 單元測試用例中看到任何值?

更新 不過問題仍然沒有答案。還有什麼建議?

回答

2

正如您猜測的那樣,測試數據庫的問題是數據。

我認爲攻擊這個的方法是讓測試數據庫與您的生產模式相匹配。做你需要做的事來填充數據庫,測試數據訪問對象,然後刪除測試數據庫。

另一種方法是創建您應該知道的數據集,將其插入到數據庫中,執行查詢並確保查詢結果與數據集相匹配,然後將整個事件作爲一個事務回滾。這樣你的測試數據總是新鮮的,但是你不會對數據庫造成任何傷害。

測試數據庫DAO進行單元測試。一旦它運行,你應該在測試服務時嘲笑DAO。單元測試服務意味着你不再擔心DAO。只要確保該服務獲得所需的數據即可證明其正確運行。

+1

測試數據庫建議應該是第一個。這在實踐中非常有用。花哨的回滾解決方案應該是第二個,或者在緊急情況下可能是遙遠的,因爲測試數據庫確實是最好的方式。 –

+0

在我們的情況下,我們有內存數據庫中使用的databuilder,所以測試數據庫不應該是一個問題,但我的困境在於,我將在同一個數據庫上使用相同的查詢,所以我會收到始終不相同的結果對我而言,我正在感受到這裏的某些東西是不對的 – Rachel

+0

完成。我扭轉了這兩個。 – duffymo