簡單的問題。如果我使用spring-data爲我的DAO層生成CRUD方法,是否還應該針對生成的方法編寫單元測試?或者這將是單元測試庫代碼的等價物?我應該單元測試生成的Java代碼嗎?
在此先感謝。
編輯:爲了說明問題,我在詢問是否需要編寫單元測試以及一套在發佈之前運行的集成測試。例如,unit test爲DAO層的findAll()方法將類似於以下內容:
class DepartmentDAOTest extends spock.lang.Specification {
/* ... */
def "returns all departments"() {
setup:
def result = new List<Department>()
when:
result = dao.findAll()
then:
result.size() == EXPECTED_SIZE
}
}
鑑於一個integration test可能會通過用手測試團隊或顯影劑進行運行,可能標記新的前發佈。這可以使用JWebUnit或Geb自動化,並且測試每個組件(包括平臺)以確保它們在「集成」時按預期工作。
如果我使用JdbcTemplate手動編寫DAO實現,那麼我應該不會單元測試每種方法。當我單元測試服務層(調用DAO層)時,我可以嘲笑DAO層,所以我不測試兩次。
如果我爲生成PDF格式的第三方庫(如pdfbox)進行調用,每種方法都有工作的期望(因爲它是作爲pdfbox項目的一部分進行測試的)。我不測試他們的drawSquare方法真的繪製了一個正方形,但在集成測試期間,我會看到我的導出PDF功能按照我們希望的方式正確地導出PDF。
所以這個問題應該重新措詞爲:「在哪個測試階段測試我的春季數據使用情況?」
你絕對應該測試生成的代碼_somehow._ –
我的猜測是它應該在集成測試期間完成。 – Joe