Java 外部类测试需要私有内部类吗?
我有一个外类,外类,和一个内类,内类。为了在Outer中测试公共方法outerMethod(),我需要创建一个Inner的实例,该实例将存储在名为inners的列表中。内部类是另一个类Other的修改版本 概述:Java 外部类测试需要私有内部类吗?,java,testing,junit,inner-classes,Java,Testing,Junit,Inner Classes,我有一个外类,外类,和一个内类,内类。为了在Outer中测试公共方法outerMethod(),我需要创建一个Inner的实例,该实例将存储在名为inners的列表中。内部类是另一个类Other的修改版本 概述: class Other{ public Other(){ //doesnt matter actual implementation } } class Outer{ private List<Inner> inners = new
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){}
}
}
还有其他的解决办法吗?现在,我可以公开内部,但Outer是唯一真正使用内部的类
考虑到专门为测试目的更改代码可能不是一个好主意 你有两个选择——要么按照@bot在评论中的建议重新设计你的类,要么应用变通方法
您可以更改字段/内部类访问修饰符,并在测试中使用它们。请看一看,了解实现细节。我仍然会在没有意义的地方更改代码。我的意思是,除了外部,没有人需要内部。那么,它们不是有点相同吗:更改测试代码?我不同意。提高代码的可测试性会自动改善代码的设计。可测试代码具有设计良好的代码的大部分属性。因此,您同意Oleg,不同意我的方法,但同意可以将代码更改为更可测试的代码?eytanfb,您将更改测试,而不是测试的代码库@bot well Design code更可测试,而不是相反,我还没有看到一个设计良好的代码,它的javadoc说“这个方法只是为了测试目的-请不要使用它”,仅供参考,所以社区同意我的观点。你需要再次阅读你链接到我的问题。确保你阅读了你把我联系到的问题的所有答案和评论,因为它完全符合我的观点,而不是你的。我很困惑。为什么需要内部实例从外部类本身访问外部类中已经存在的方法?需要维护一个内部文件列表是什么?您计划在哪里添加createInstance方法?相关
public void createInnerInstance(Other other)
{
Inner inner = new Inner(other);
inners.add(inner);
}