Тестовый класс Config с несколькими частными конечными полями - PullRequest
0 голосов
/ 07 декабря 2018

Как бы вы предложили «исправить» этот класс для лучшего тестирования?

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 голосов
/ 07 декабря 2018

Рассмотрите возможность разделения ComplexA, ComplexB и т. Д. На их собственные классы.Это решает проблему независимого тестирования.Тогда вы столкнетесь с проблемой сбора кусочков в одно целое.Вероятно, вы бы предпочли композицию, а не наследование для этой проблемы;но любой подход может сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...