
[英]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.