3 回答
TA貢獻1860條經驗 獲得超9個贊
實體只是沒有邏輯的 POJO 對象。了解您究竟測試了什么是值得的。
如果你想測試實體驗證器,那么放置一些隨機數據而不是預定義的數據是值得的
不但是private static final String ADDRESS_LINE1 = "Address line 1";_
?Address?address?=?Address.builder() ????????????.line1(?randomAddress()?) ????????????.city(?randomCity()?) ????????????.countryCode(?randomCountry()?) ????????????.build()
random*()返回一些有效返回值的預定義方法在哪里。
如果你想測試Hibernate和mappers,值得考慮一些像H2這樣的嵌入式數據庫來做測試。
關于 getter 和 setter,大多數時候它們是自動生成的,這就是為什么我看不到測試它們的意義。
TA貢獻2080條經驗 獲得超4個贊
實體是數據庫的增強鏡像(實例是 SSOT,類是 SVOT),M im MVC,它們是 beans。Bean 是否應該進行單元測試:否。
你所做的是在實體中混合 M 和 C。C應該進行單元測試嗎?Yes!!!.
所以你真的應該測試它們!
TA貢獻1757條經驗 獲得超7個贊
請注意,實際上您只測試了所用內容的一小部分:例如,所有和無參數構造函數、setterhashCode()都equals()沒有經過測試。
現在測試它是一個好習慣嗎?我認為是的。
使用 Lombok 注釋生成一些實現,您只能在運行時(測試和應用程序運行時)驗證行為。
例如,注釋可能不會產生預期的行為,因為與另一個注釋沖突或使用不當(例如,如果生成的方法中存在循環,則會出現 stackoverflow 錯誤),您可能只會在運行時發現這些行為,充其量只能清楚地說明異常問題或最壞的情況是根本原因不明顯的潛在錯誤。
同樣,如果有人通過替換它(出于調試目的)而無意中破壞了實現:
@ToString(exclude = "client")
經過 :
@ToString
您希望自動測試檢測到它。
最后,如果您出于任何原因想要刪除項目的 Lombok,您希望進行回歸測試,以斷言沒有 Lombok 的新實現仍然是正確的。
所以是的,使用許多注釋意味著編寫許多斷言/測試。
但在某種程度上這是正常的,因為第三方 API 為您的類提供動力并不是一個細節。
請注意,對于 getter/setter,我認為測試它們不會帶來很大的價值,因為能夠調用它們通常意味著它們已由 Lombok 正確實現。
用這些術語進行推理(統一測試您的類 API 提供的內容)有利于生成有用且高質量的代碼,因為我們在添加生成某些代碼/邏輯的注釋之前會三思而后行。這是一件好事,因為我經常看到濫用 Lombok 注釋:“我們不確定是否需要它,但沒問題,因為它很容易聲明”。
我將對注釋應用完全相同的想法, javax.validation.constraints而對于驗證問題,我可能會使用參數化測試來減少樣板代碼。
添加回答
舉報
