[英]how to test the following class with private methods using junit and Mockito, here i cannot use powermockito for private method call
[英]How would I test two methods that use shared private/public method?
public class A {
public List<Model> getModels() {
List<Model> models = (some logic to find all models...)
models.forEach(model -> doSharedLogic(model));
}
public Model getModel(int id) {
Model model = (some logic to find Model by Id...)
doSharedLogic(model);
}
private void doSharedLogic(Model model) {
// manipulations with model...
}
}
假設我有上面的代碼。 我想對 public API(getModels 和 getModel 方法)進行單元測試。 他們使用提取到單獨方法 doSharedLogic() 中的共享邏輯。
問題:如果基本邏輯完全相同,如何正確測試這兩種方法?
**我的假設:**
通過測試 doSharedLogic() 的所有可能結果來測試 getModel 方法;
對 getModels() 做同樣的事情;
但它會導致測試中的代碼重復。
如果我只是將 doSharedLogic 作為這些公共方法之一(例如:getModel())的一部分進行測試,我不能確定以后不會有人來,更改某些內容並破壞第二種方法(getModels())中的代碼例如刪除共享邏輯
我的假設:測試 getModel 方法,測試 doSharedLogic() 的所有可能結果;對 getModels() 做同樣的事情;
我會測試每種方法的作用並避免重復。
如果您真的擔心有人稍后會更改 getModels() 的 lgoic 以不調用 getModel(),我會將其放在 getModel() 的評論中,以便未來的編輯知道如果他們刪除該依賴項,他們可能需要添加額外的測試.
我絕對不會在兩者中添加一堆重復的數據轉換測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.