Это важно для модульного тестирования конструктора? - PullRequest
70 голосов
/ 11 декабря 2008

Должен ли я конструкторам модульных тестов? Скажем, у меня есть такой конструктор:

IMapinfoWrapper wrapper;
public SystemInfo(IMapinfoWrapper mapinfoWrapper)
{
    this.wrapper = mapinfoWrapper;
}

Нужно ли писать модульный тест для этого разработчика? У меня нет геттеров для переменной-оболочки, поэтому мне не нужно проверять это.

Ответы [ 15 ]

1 голос
/ 11 декабря 2008

Я верю в 100% охват. Также 100% охват не просто тестированием простых взаимодействий путем насмешек или просто настройкой и получением вещей, а дополнительными интеграционными / приемочными тестами, которые проверяют функциональность. Поэтому, если вы в конечном итоге будете писать действительно хорошие тесты интеграции / приемки, следует вызывать все ваши конструкторы (и простые методы, такие как сеттеры и геттеры).

0 голосов
/ 19 декабря 2008

Если конструктор содержит некоторую логику, такую ​​как инициализация класса, я думаю, вы должны протестировать сам конструктор. Или вы можете поговорить с разработчиком, что размещение инициализации в конструкторе снизит тестируемость тестируемого кода.

0 голосов
/ 12 декабря 2008

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

Теперь, в более обычной ситуации, если вы хотите сделать что-то еще с оберткой, тогда, возможно, есть смысл. Например, вы можете сгенерировать исключение ArgumentNullException, если попытаетесь передать значение null, и теоретически это может быть модульный тест. Даже тогда ценность теста довольно минимальна.

Лично я почти никогда не тестирую конструкторы явно. Если они достаточно сложны, чтобы нуждаться в тестах, я чувствую, что код немного вонючий.

0 голосов
/ 11 декабря 2008

Модульное тестирование - это проверка путей выполнения, что часто называют Цикломатическая сложность

Если у вас нет выбора пути, нет, если, нет цикла, нет GOTO (= P), это не очень полезно

0 голосов
/ 11 декабря 2008

Какое поведение экземпляра SystemInfo зависит от значения wrapper?

Если что-то может пойти не так (например, нулевое значение приводит к поломке), тогда я предлагаю написать сценарии, описывающие каждую такую ​​ситуацию, и использовать их для определения соответствующих модульных тестов.

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

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