您建议如何"修复"此类以进行更好的测试?
public class Config {
private final ComplexA complexA;
private final ComplexB complexB;
(...)
Config(String[] args) {
complexA = privateMethodCalculatesA(args);
complexB = privateMethodCalculatesB(args);
(...)
}
}
现在,如果用户使用System.exit
插入不存在或错误的参数,则所有计算complexA/B/...
的方法都会很快失败。这里的问题是Config
被应该单独测试的方法弄得一团糟。
尽管如此,同样的方法不应该公开,结果应该缓存,因为计算可能会很昂贵。
直接宣布上述方法static protected
并单独测试?
这样做的正确方法是什么?
考虑将ComplexA
、ComplexB
等分离为各自的类。这就解决了独立测试的问题。然后你就面临着将这些碎片收集成一个整体的问题。对于这个问题,你可能更喜欢组合而不是继承;但任何一种方法都可能奏效。