Я смотрю на небольшую (~ 70kLOC, включая сгенерированную) C # (.NET 4.0, немного Silverlight) кодовую базу, которая имеет очень низкий охват тестированием. Сам код работает в том смысле, что он прошел пользовательское приемочное тестирование, но он хрупкий и в некоторых областях не очень хорошо продуман. Я хотел бы добавить твердое покрытие модульных тестов для устаревшего кода, используя обычные подозрения (NMock, NUnit, StatLight для битов Silverlight).
Мой обычный подход - начать работать над проектом, модульным тестированием и рефакторингом, пока я не буду удовлетворен состоянием кода. Я делал это много раз в прошлом, и это сработало хорошо.
Однако на этот раз я подумываю использовать генератор тестов (в частности Pex ) для создания тестовой среды, а затем вручную ее дополнить.
Мой вопрос: использовали ли вы генераторы модульных тестов в прошлом, когда начинали работу над устаревшей кодовой базой, и если да, то порекомендуете ли вы их?
Я опасаюсь, что сгенерированные тесты будут пропускать семантические нюансы кодовой базы, что приведет к страшной ситуации с тестами ради метрики покрытия, а не с тестами, которые четко выражают предполагаемое поведение в коде.
источник
Ответы:
Я бы посоветовал смотреть на вещи немного по-другому. Добавление нового кода модульного теста в существующее приложение без инцидентов может не дать вам наилучших результатов. Если вы делаете это для ознакомления с базой кода или у вас действительно есть время убить и хотите протестировать генераторы тестов, тогда игнорируйте мои комментарии.
Чтобы быть прагматичным, вы должны просмотреть все списки ошибок. Затем создайте модульные тесты для каждой ошибки, в результате чего следует, как она должна себя вести. В идеале вы должны добавлять новый код только для каждой ошибки по мере ее достижения.
Время добавить код модульного теста:
Сложно количественно оценить ценность добавления модульных тестов после факта.
Обычно я не позволяю себе писать ответы, которые противоречат тому, что хочет спрашивающий, но я чувствую, что это хороший урок для прохождения.
источник