我正在為我的應用程式撰寫一些單元測驗,我想到了以下問題:
模擬物件和創建新的實體哪個更好?
是模擬一個物件還是創建一個新的實體,哪個更好?
我問的是POJO物件,而不是具有實際邏輯的物件。
謝謝
uj5u.com熱心網友回復:
哪種方法更好,是模擬一個物件還是創建一個新的物件實體?
哪種方法更好?是使用物件的實際行為,還是使用您在測驗中配置的物件的行為?
希望非常明顯的是,實際行為會更好。否則,你可能只是在測驗測驗的實作,這沒有任何意義。
事實上,在最壞的情況下,你可以配置你的模擬來做一些在生產代碼中根本不可能發生的事情。例如,Mockito 中曾經有一個錯誤,允許您指定模擬應該拋出方法不允許拋出的檢查例外。
Wikipedia上關于嘲諷的文章描述了適合使用嘲諷的情況:
因此,在特定情況下,模擬有其用途;但在實際情況下,你應該始終傾向于使用實際實作。如果一個物件具有以下任何特征,那么在以下情況下使用模擬物件可能是有用的 使用一個模擬物件來代替它可能是有用的:
該物件提供了非確定性的結果(例如,當前的時間或當前的溫度); 它的狀態為非確定的。 它具有難以創建或重現的狀態(例如,網路錯誤); 它的速度很慢(例如,網路錯誤)。 它的速度很慢(例如,一個完整的資料庫,必須在測驗前進行初始化); 它還不存在。 它還不存在或可能會改變行為; 。它必須包括專門用于測驗的資訊和方法(而不是用于其實際任務)。
uj5u.com熱心網友回復:
嘲弄技術是專門為測驗而創造的。因此,如果你用JUnit進行測驗,更好的選擇是使用模擬物件而不是你的POJO的 "真實 "實體。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/318671.html
標籤:
下一篇:ClassNotFoundException:scala.collection.convert.AsJavaExtensionswhenusing@EmbeddedKafkafromspring-ka
