首页 > 解决方案 > 具有多个私有最终字段的测试配置类

问题描述

您如何建议“修复”此类以进行更好的测试?

public class Config {
    private final ComplexA complexA;
    private final ComplexB complexB;
    (...)

    Config(String[] args) {
         complexA = privateMethodCalculatesA(args);
         complexB = privateMethodCalculatesB(args);
         (...)
    }
}

现在,complexA/B/...如果用户使用System.exit. 这里的问题是Config,应该孤立地测试的方法变得混乱。

尽管如此,同样的方法不应该公开,结果应该被缓存,因为计算可能很昂贵。

只是击中子弹并声明所述方法static protected并单独测试它们?

这样做的正确方法是什么?

标签: javaunit-testingdesign-patterns

解决方案


考虑将ComplexA,ComplexB等分离到它们自己的类中。这解决了独立测试问题。然后你面临着将碎片收集成一个整体的问题。对于该问题,您可能更喜欢组合而不是继承;但任何一种方法都可能奏效。


推荐阅读