外类测试需要私有内部类吗?

时间:2012-09-29 05:14:57

标签: java testing junit inner-classes

我有一个外部类,外部和内部类,内部。为了测试公共方法,outerMethod(),在Outer我需要创建一个Inner的实例,它将存储在一个名为inners的列表中。内部类是另一个类的修改版本,其他。

概述:

class Other{
    public Other(){
       //doesnt matter actual implementation
    }
}

class Outer{
    private List<Inner> inners = new ArrayList<Inner>();

    public Outer(){}

    public void outerMethod(){}

    private class Inner{
        public Inner(Other other){}
    }
}

我的问题是我是否应该为了测试目的而创建类似下面的方法。

public void createInnerInstance(Other other)
{
    Inner inner = new Inner(other);
    inners.add(inner);
}

还有其他解决方法吗?现在我可以让Inner公开,但Outer是唯一真正使用Inner的类。

此致

1 个答案:

答案 0 :(得分:1)

专门为测试目的而更改代码可能不是一个好主意。

您有两个选择 - 要么像@bot在评论中建议的那样重新设计您的课程,要么应用变通办法。

您可以更改字段/内部类访问修饰符,并在测试中使用它们。请查看herehere了解实施细节。