2016-04-22 83 views
1

我正在使用JUnit來測試我的Spring服務,但我在關閉連接到我的HSQLDB inbetween測試時出現問題。我已經將bean中的destroy-method屬性設置爲我的數據源的close方法,但即使關閉容器,它仍然保持鎖定狀態。JUnit Spring - HSQLDB不關閉efter測試

奇怪的是,這隻發生在我的JUnit測試類,而不是在我的客戶端。在我的客戶端,當我稱之爲close方法時,容器關閉。

我也在JUnit測試中提供了@AfterClass方法,但這也沒有幫助。

有什麼想法?

+0

它可能在持久性測試中沒有持久性上下文。你在用什麼跑步者(@RunWith註釋)?如果它的彈簧爲測試加載了什麼上下文配置?你能提供你的代碼嗎? – diarmuid

+0

我對Spring很新,我正在關注VirtualPairProgrammers的Spring Fundamentals課程。所以我現在只知道基本的JUnit和基本的Spring。代碼可以正常工作,但數據庫只是不關閉inbetween測試,這使得一些測試有點不可靠。我的數據源是dbcp,我使用JDBC。如果那是你要求的? – Lithicas

+0

你可以發佈或鏈接有問題的junit類嗎? – diarmuid

回答

0

您的Junit測試使用HSQLDB進行單元測試的結果是什麼?它是向HSQLDB添加新記錄還是需要數​​據庫提交的任何類型的更新/刪除? 檢查您是否設置了HSQLDB的autocommit = false並執行DML操作,而無需提交或回滾。

+0

它從數據庫中添加和刪除。我也在一些測試中從數據庫中獲取數據。 – Lithicas

+0

正如我所提到的,檢查您是否正在使用autocommit = false運行操作,並且您不是在單元測試中專門調用commit()操作。如果你不確定是否在自動提交下,只需在DB插入/更新/刪除的每一端調用commit()(或者在添加@After註釋的函數中調用commit())。 – wonhee