具有多个私有最终字段的测试配置类

时间:2018-12-07 16:51:22

标签: java unit-testing design-patterns

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

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并对其进行了隔离测试?

执行此操作的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

请考虑将ComplexAComplexB等分成自己的类。这样就解决了独立测试的问题。然后,您将面临将碎片收集成一个整体的问题。对于该问题,您可能更倾向于使用组合而不是继承。但任何一种方法都行得通。