Модульное тестирование переопределенных методов, которые вызывают super () - PullRequest
3 голосов
/ 11 июля 2011

Я пытаюсь найти лучший способ написания модульного теста для переопределенного метода, который в качестве последнего шага вызывает super ().По сути, я хочу помассировать параметры, прежде чем они будут использованы в базовом классе.

Вот пример метода:

    @Override
    public JobExecution run(Job job, JobParameters passedParams) 
            throws JobExecutionAlreadyRunningException, JobRestartException {

        JobParameters launchParameters;

        if(passedParams.isEmpty()) {
            launchParameters = jobParameterSetter.getJobParameters();
        } else {
            launchParameters = passedParams;
        }

        return super.run(job, launchParameters);
    }

То, что сводится к тому, что я не могунайдите шов, чтобы проверить параметры, которые находятся в возможном вызове super.run (), и это все, что я хочу проверить.Базовый класс имеет несколько зависимостей, и действительно нет необходимости тестировать этот класс (не говоря уже о гораздо большей работе).

Композиция - это решение, но это довольно сложный базовый класс, и мне нужно раскрыть все это, переопределяя только несколько методов.

Я также рассматриваю подделку базового класса для тестирования, что достаточно просто, но я не уверен, как изменить путь к классу только для запуска модульного теста (Eclipse для отдельных тестов; Maven для тестирования сборки).- может быть, вопрос сам по себе?).

Я должен представить, что об этом уже спрашивали, но я не могу найти точное соответствие.

1 Ответ

1 голос
/ 11 июля 2011

Кажется, что логикой, которую вы хотите проверить, является поток if-else, а НЕ вызов базового класса.Я бы сделал это, создав защищенный метод с именем getLaunchParameters(JobParameters jobParameters), который выполняет ту логику, которую вы хотите проверить.

Таким образом, проверяемая вами логика проверяется, а логика вас не интересуеттестирование не тестировалось, и вы взломали кусок кода, который может быть использован в другом месте в будущем.

...