2012-04-03 59 views
0

我在應用程序中有很多實體,並且我使用JPA實現來堅持它們,因此,跨DAO的大多數CRUD方法都是類似的(請參見下面的示例類圖)。Spring,JPA - 測試抽象類

enter image description here

爲此有接口DAOTemplate其中包含適用於所有實體方法,由抽象類AbstractDAO實現。

某些實體需要其他方法,例如findByEmail用於User實體。爲此目的,DAO接口具有這樣的方法,例如, UserDAO

現在我想爲所有方法(DAOTemplateUserDAO中的那些)編寫集成測試。什麼是最好的解決方案?我應該以某種方式(如何?)測試AbstractDAO,然後只有在UserDAOTest特殊方法,或者我應該測試所有方法在UserDAOTest和其他實體的其他測試案例?我試圖避免第二種解決方案,因爲我不喜歡它。

感謝您的回答。

回答

1

您應該測試UserDAOTest中的所有方法,因爲根據您嘗試持續的實體調用它們將會有不同的結果。你不僅要測試你的DAO代碼,還要測試你的實體,它們的註釋和它們之間的關係。

但是在遵循DRY原則時,您不應該在每次測試中重新實現AbstractDAO方法,但是您可以創建一個所有UserDAOTest繼承的AbstracDAOTest。讓你的測試符合你的代碼應該看起來相當不錯..

1

我有類似的情況。如果你有很多DAO,那麼再次測試相同的方法可能會很慢。 我爲測試創建了虛擬實體和DAO實現。