簡體   English   中英

Junit最佳實踐:公共方法調用多個私有方法

[英]Junit Best Practice: Public method calling multiple private methods

我開始為遺留代碼庫編寫JUnit測試用例。 公共方法之一具有多個if語句,並且基於條件它正在調用不同的私有方法。
我應該只編寫一種測試方法並針對所有條件進行測試嗎? 針對每種情況的一種方法?

如果為每個if條件編寫單獨的方法,我會不會失去一致性?

測試私有方法的方法是什么? 私有方法邏輯可能比公共方法更復雜。

根據要測試的方案的數量來確定方法的數量,這與被測試事物所具有的方法無關。

如果每種情況都需要使用自己的代碼來設置,那么每種情況都將獲得一種測試方法。 如果您可以對測試進行參數化,那么您也許可以使用一種測試方法,並為每種情況傳遞不同的數據。

重要的是,對於每種輸入組合,您希望測試獨立於其他測試而成功或失敗。 如果將所有測試合並為一個方法,那么那不可能發生,則第一個測試失敗將阻止其余測試運行。

我同意內森。 測試應該通過方案而不是方法進行。 有時,遺留代碼是以您需要直接測試私有方法的方式編寫的。 是的,應該重構代碼。 但是,如果您不能重構或想要先進行測試……

選項1-使方法包私有訪問

這是一個非常安全的重構。

選項2-使用反射直接調用靜態方法

如果您真的不能觸摸代碼,這是您可以做的最好的事情。 我要問不要碰代碼的要求。 如果我們無法改進代碼,是否應該將其遺留在角落以免腐爛?

從我的角度來看,在單元測試中使用較小的單元通常會帶來更好的測試。 對您來說,這意味着將私有方法更改為打包私有並為每個方法編寫測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM