java - 外部类测试需要私有(private)内部类吗?

标签 java testing junit inner-classes

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

概述:

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 的类。

问候

最佳答案

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

您有两个选择 - 按照@bot 在评论中建议的那样重新设计您的类,或者应用解决方法。

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

关于java - 外部类测试需要私有(private)内部类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12650139/

相关文章:

java - 如何获取上一个URL页面?引荐来源网址不起作用

java - 如何检查一个列表是否是另一个列表的子集

android - Espresso - 设置 SeekBar

angularjs - jasmineReporters.JUnitXmlReporter 不生成 XML 报告

java - 与项目 'com.android.support:support-media-compat' 中的依赖项 ':app' 冲突

testing - 线程 Maven 使用顺序单元测试构建?

java - 使用图形 API 的 Azure AD 导入适用于随机应用程序

java - firebase数据库读取问题

java - 来自命令行的 NullPointerException,而不是在 IntelliJ 调试器中

java - 在 IntelliJ IDEA 中并行运行 JUnit 测试