3 回答

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊
實(shí)體只是沒有邏輯的 POJO 對象。了解您究竟測試了什么是值得的。
如果你想測試實(shí)體驗(yàn)證器,那么放置一些隨機(jī)數(shù)據(jù)而不是預(yù)定義的數(shù)據(jù)是值得的
不但是private static final String ADDRESS_LINE1 = "Address line 1";
_
?Address?address?=?Address.builder() ????????????.line1(?randomAddress()?) ????????????.city(?randomCity()?) ????????????.countryCode(?randomCountry()?) ????????????.build()
random*()
返回一些有效返回值的預(yù)定義方法在哪里。
如果你想測試Hibernate和mappers,值得考慮一些像H2這樣的嵌入式數(shù)據(jù)庫來做測試。
關(guān)于 getter 和 setter,大多數(shù)時(shí)候它們是自動生成的,這就是為什么我看不到測試它們的意義。

TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊
實(shí)體是數(shù)據(jù)庫的增強(qiáng)鏡像(實(shí)例是 SSOT,類是 SVOT),M im MVC,它們是 beans。Bean 是否應(yīng)該進(jìn)行單元測試:否。
你所做的是在實(shí)體中混合 M 和 C。C應(yīng)該進(jìn)行單元測試嗎?Yes!!!
.
所以你真的應(yīng)該測試它們!

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超7個(gè)贊
請注意,實(shí)際上您只測試了所用內(nèi)容的一小部分:例如,所有和無參數(shù)構(gòu)造函數(shù)、setterhashCode()
都equals()
沒有經(jīng)過測試。
現(xiàn)在測試它是一個(gè)好習(xí)慣嗎?我認(rèn)為是的。
使用 Lombok 注釋生成一些實(shí)現(xiàn),您只能在運(yùn)行時(shí)(測試和應(yīng)用程序運(yùn)行時(shí))驗(yàn)證行為。
例如,注釋可能不會產(chǎn)生預(yù)期的行為,因?yàn)榕c另一個(gè)注釋沖突或使用不當(dāng)(例如,如果生成的方法中存在循環(huán),則會出現(xiàn) stackoverflow 錯誤),您可能只會在運(yùn)行時(shí)發(fā)現(xiàn)這些行為,充其量只能清楚地說明異常問題或最壞的情況是根本原因不明顯的潛在錯誤。
同樣,如果有人通過替換它(出于調(diào)試目的)而無意中破壞了實(shí)現(xiàn):
@ToString(exclude = "client")
經(jīng)過 :
@ToString
您希望自動測試檢測到它。
最后,如果您出于任何原因想要刪除項(xiàng)目的 Lombok,您希望進(jìn)行回歸測試,以斷言沒有 Lombok 的新實(shí)現(xiàn)仍然是正確的。
所以是的,使用許多注釋意味著編寫許多斷言/測試。
但在某種程度上這是正常的,因?yàn)榈谌?API 為您的類提供動力并不是一個(gè)細(xì)節(jié)。
請注意,對于 getter/setter,我認(rèn)為測試它們不會帶來很大的價(jià)值,因?yàn)槟軌蛘{(diào)用它們通常意味著它們已由 Lombok 正確實(shí)現(xiàn)。
用這些術(shù)語進(jìn)行推理(統(tǒng)一測試您的類 API 提供的內(nèi)容)有利于生成有用且高質(zhì)量的代碼,因?yàn)槲覀冊谔砑由赡承┐a/邏輯的注釋之前會三思而后行。這是一件好事,因?yàn)槲医?jīng)常看到濫用 Lombok 注釋:“我們不確定是否需要它,但沒問題,因?yàn)樗苋菀茁暶鳌薄?/p>
我將對注釋應(yīng)用完全相同的想法, javax.validation.constraints
而對于驗(yàn)證問題,我可能會使用參數(shù)化測試來減少樣板代碼。
添加回答
舉報(bào)