【发布时间】:2018-12-07 16:51:22
【问题描述】:
您如何建议“修复”此类以进行更好的测试?
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并单独测试它们?
这样做的正确方法是什么?
【问题讨论】:
-
@user7294900 谢谢!它很有用,并且已经在其他测试中使用,但在这个特定场景中,当初始化
Config时,我会模拟很多私有方法来抑制它们。新变量意味着构造函数上有更多私有方法,这会使以前的测试无效。这真的比在这些方法上使用static protected更明智吗?感谢您的宝贵时间。 -
我不确定更改测试代码是否更好,但这取决于
标签: java unit-testing design-patterns