[英]How to abstract a static classes
我有一個靜態課程。 我可以對其進行修改,並使其擴展interface \\ abstract類。
它包含
為了使此代碼可測試,我想
我認為靜態類有兩點好處:
如果在其中對方法進行建模以使它們純凈,則可以立即對其進行測試。 另一方面,全局數據(您的常量和只讀成員)不需要是testet,因為它們應該通過所述方法生成。
因此,如果您的靜態方法使用類中的全局數據,只需對其進行重構,以將這些數據作為參數包含到方法中,則可以使用簡單的包裝器為您的全局數據提供重載,並測試新的(現在是純函數)函數。 注意將諸如數據庫數據或系統時間(DateTime.Now)之類的內容以及類似的副作用數據也包含到您的方法中。
如果參數列表變得很大,則將方法重構為一個類,其中某些/大多數參數封裝在新的類字段中-始終記住SOLID中的S(單一職責)-僅將所有內容整理為“ MyStaticGlobals”類/ singelton如果您分開測試零件。
一種選擇是將使用的靜態類轉換為常規類。 在您的主應用程序中,您添加了一個單例,以便在任何地方都可以使用同一實例,因此單調有效地將一個實例轉換為全局實例。 但是在測試中,您可以按需創建實例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.