【发布时间】:2014-03-10 22:17:50
【问题描述】:
如何测试调用另一个方法的方法?在我的示例中,我想知道如何测试调用create 方法的initComponentsTypeA。
public MyClass{
private List<TypeA> componentsTypeA;
public void initComponents(Config c){
componentsTypeA = initComponentsTypeA(c);
//...
}
private List<TypeA> initComponentsTypeA(Config c){
//...
List<MyObject> someList = c.getSomeList();
List<TypeA> localList = new ArrayList<>();
for(MyObject mo : someList){
localList.add(create(mo));
}
return localList;
}
private TypeA create(MyObject myObject){
// ...
}
}
我知道一种解决方案是以这种方式重构代码(如下所示)。但是有必要吗?它是唯一的解决方案吗?
public MyClass{
private List<TypeA> componentsTypeA;
public void initComponents(Config c){
List<MyObject> myObjectList = initComponentsTypeA(c);
componentsTypeA = create(myObjectList)
//...
}
private List<MyObject> initComponentsTypeA(Config c){
//...
List<MyObject> someList = c.getSomeList();
return someList;
}
private List<TypeA> create(List<MyObject> myObjectList){
// ...
}
}
在第二个重构示例中,方法的名称也应根据其含义进行更改。
【问题讨论】:
-
第一种方法有什么问题,第二种方法是如何解决的?
标签: java oop unit-testing junit mocking