Как бы вы предложили «исправить» этот класс для лучшего тестирования?
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
и протестируйте их изолированно?
Каков был бы правильный способ сделать это?