2014-02-19 61 views
0

我在DAO接口中有一個字符串變量,其實現在junit中使用。在junit中更改接口中的變量

我想在我調用JUnit下的DAO中的方法之前修改該變量的值。

例如,接口中的變量具有oracle原生查詢,我希望在運行使用該變量的方法之前將其替換爲嵌入式數據庫。

我試圖this,但它不工作

有沒有辦法做到這一點?

+0

發佈一些代碼。但是我在測試一個甚至不是在生產代碼中使用的查詢時都沒有看到重點。你所有的測試都會測試一個假的查詢。 –

回答

-1

我猜你需要使用一些嘲諷框架,如EasyMock的,PowerMock

+0

-1:你不應該試圖*單元*測試數據庫訪問代碼;針對實際數據庫的集成測試 – tddmonkey

0

不要這樣做。改爲使用真正的Oracle數據庫運行查詢。

通過替換您的代碼的關鍵部分,您不會測試它會在生產中正常工作。您使用嵌入式數據庫獲得+1,但使用-1來替換正在發送的實際查詢。

+0

由於它是生產版,我無法將該查詢用於junit。此外,該查詢在oracle中不支持hsqldb的案例和解碼。是否有替代方案? – Prasad

+0

爲什麼你不能在JUnit中做到這一點?我建議針對開發數據庫運行,而不是生產數據庫。這可能有助於解釋你試圖測試的內容 – tddmonkey

+0

除了我們自己的oracle數據庫外,我們正在使用由外部團隊通過有限連接的數據庫鏈接管理數據庫。訪問這些數據庫也很昂貴,我們可以將它用於JUnit。 – Prasad

0

如果您的測試的目的是驗證查詢的正確性,您應該針對Oracle數據庫運行它,而不是替換查詢字符串。

如果目標僅僅是關於DAO與數據庫連接(或Hibernate Session或JPA EntityManager等)之間的正確交互,那麼您不應該替換查詢。您應該模擬數據庫連接並驗證是否將正確的查詢傳遞給數據庫連接以供執行。

它們都不需要你替換你的查詢字符串。