Означает ли добавление функций-членов к тестовым приборам плохой тест? - PullRequest
1 голос
/ 06 февраля 2009

Мои тестовые приборы часто имеют функции-члены «setup», которые не могут быть вызваны во время создания прибора, поскольку у них есть параметры, которые будут меняться в зависимости от запускаемых тестов. Они написаны, чтобы избежать дублирования кода.

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

Ответы [ 3 ]

1 голос
/ 06 февраля 2009

Это может означать, что вам нужно параметризовать конструкцию с разными параметрами, чтобы протестировать разные перестановки, и в этом случае я думаю, что это на 100% правильно. DRY применяется как в тестах, так и в коде.

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

0 голосов
/ 06 февраля 2009

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

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

0 голосов
/ 06 февраля 2009

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

Так что, если вы создаете тест Add (int a, int b), не имеет значения, генерируются ли int a и int b так, как если бы вы делали это точно в производственной среде, пока Add дает правильный ответ.

Вы также должны создать тест для генерации ваших "int a" и "int b", чтобы вы знали, когда ОНИ будут созданы, они будут ожидаемыми объектами.

Надеюсь, это было ясно. Если нет, я отредактирую.

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