2012-11-16 65 views
0

通常在單元測試中使用對象模擬;但是如果一個編寫單元測試JPA實體的方式應該如何,例如EntityManager是否被模擬?什麼是實際測試?如何單元測試數據庫訪問/ ORM實體?

編輯:假設我想測試對象是否持久;在生產代碼中,爲了持久化,可以使用容器提供的EntityManager。對於這種類型的測試,這個EntityManager應該被嘲笑,它應該是一個用於測試的資源本地測試,還是應該在容器中運行測試(測試運行由Java代碼觸發)?

回答

3

實體表示數據。它可以有一些方法(除getter和setter之外)可以像任何其他方法一樣進行單元測試。

如果您想測試實體可以從數據庫中持久保存並檢索(即其映射定義正確),那麼您不應該嘲笑任何東西。進行測試,使用真實的實體管理器和充滿測試數據的數據庫,並試圖持久化和/或檢索實體的實例。

您可以使用DbSetup(是的,這裏是自我推銷)在測試之前用測試數據填充數據庫。

+0

假設我想測試數據是否持久?這個測試應該在容器中運行嗎? – m3th0dman

+0

不一定。 JPA可以在容器外部使用。 –

+0

所以解決方案是使用資源本地EntityManager?謝謝。 – m3th0dman