Java 具有多个私有最终字段的测试配置类
您如何建议“修复”这个类以更好地进行测试Java 具有多个私有最终字段的测试配置类,java,unit-testing,design-patterns,Java,Unit Testing,Design Patterns,您如何建议“修复”这个类以更好地进行测试 public class Config { private final ComplexA complexA; private final ComplexB complexB; (...) Config(String[] args) { complexA = privateMethodCalculatesA(args); complexB = privateMethodCalculate
public class Config {
private final ComplexA complexA;
private final ComplexB complexB;
(...)
Config(String[] args) {
complexA = privateMethodCalculatesA(args);
complexB = privateMethodCalculatesB(args);
(...)
}
}
现在,如果用户在系统中插入不存在或错误的参数,那么所有计算complexA/B/…
的方法都会很快失败。退出。这里的问题是Config
被应该单独测试的方法弄乱了
尽管如此,同样的方法不应该公开,结果应该缓存,因为计算可能会很昂贵
直接声明所述方法受静态保护,并单独测试它们
正确的方法是什么?考虑将ComplexA
、ComplexB
等分离到各自的类中。这就解决了独立测试的问题。然后你就面临着把碎片收集成一个整体的问题。在这个问题上,你可能更喜欢组合而不是继承;但这两种方法都可能奏效。请参见@user7294900 thks!它很有用,并且已经在其他测试中使用,但是在这个特定的场景中,当初始化Config
时,我会模拟很多私有方法来抑制它们。新的变量将意味着构造函数上有更多的私有方法,这将使以前的测试无效。这真的比在这些方法上使用静态保护
更明智吗?谢谢您的时间。我不确定为测试更改代码是否更好,但这取决于系统,我想这会解决问题。谢谢我不知道为什么我要抵制最直截了当的道路。