Как организовать тестовые случаи для класса с множеством методов?

Приложение, над которым я работаю, делает три вещи для каждого ввода (уникальный идентификатор)

  1. Извлечь информацию из нескольких источников, относящихся к этому идентификатору
  2. Проверять информацию, которую я извлекаю

    2.1 Если проверка прошла успешно, перейдите к следующему извлечению

    2.2 Если проверка не удалась, выполните первый шаг для следующего идентификатора

  3. После извлечения из всего сервиса я получаю всю информацию, преобразовываю и формирую объект-значение.

Для извлечения я создал класс для каждой службы, к которой я обращаюсь и получаю информацию.

Я обращаюсь к объекту классов извлечения в преобразовании и выполняю преобразование.

Мой класс преобразования выглядит примерно так:

        builder
        .field1(getField1(extract1))
        .field2(getFiedl2(extract1, extract2))
        .field3(getField3(extract3))
        ....
        .field100+(getField(extract..))
    return builder;

Теперь я хочу написать тестовые примеры для преобразования, которое я делаю. У меня проблемы с организацией тестов.

Если я создам класс для каждого метода, то у меня будет более 100 классов. Кроме того, если я выберу подход 1 тестового класса на класс, тогда я буду писать все тестовые примеры в одном классе, и это станет очень трудно понять.

Кто-нибудь может подсказать, что нужно сделать?


person user2989124    schedule 28.08.2015    source источник


Ответы (1)


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

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

person Jason K.    schedule 28.08.2015