Как найти неисполненный код

Привет,

У меня есть большое количество фитнес-тестов для проекта (1000+). Со временем, по мере того, как функции меняются, а общие фикстуры приходят и уходят, мы остаемся с неиспользуемым осиротевшим кодом. Но как его найти?

Для тех, кто не знает, как работает fit, у вас есть вики-страница вроде этого:

| Когда пользователь добавляет | 1 | и | 2 | Он вернулся | 3 |

Что отображается во время выполнения на такой метод, как:

public bool WhenAUserAddsAndHeIsReturned(int first, int second, int expectedResult){

    return ((first + second) == expectedResult)
}

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

Есть ли какая-нибудь утилита, которая могла бы контролировать dll фикстуры во время выполнения тестов, а затем возвращать список всех классов и методов, которые НЕ были запущены?


person ryber    schedule 19.10.2009    source источник
comment
@RobertHarvey fitnesse - это фреймворк для тестирования   -  person BoldAsLove    schedule 23.06.2021
comment
@BoldAsLove: Вы отвечаете на комментарий, которому почти тринадцать лет. Чтобы избежать этой проблемы в будущем, я удалил комментарий.   -  person Robert Harvey    schedule 23.06.2021


Ответы (3)


Ключевое слово, которое вы ищете, - это покрытие. Вопрос № 276829 охватывает некоторые варианты для вашей платформы C # /. NET.

person eswald    schedule 19.10.2009
comment
+1 коротко и мило. Недостаточно людей ссылаются на существующие хорошие ответы, которые существуют. - person DaveParillo; 20.10.2009
comment
Это сработало бы, если бы он искал 100% покрытие методов во время модульного тестирования, но говорит ли это вам, [будут ли] действительно выполняться во время нормальной работы программы? - person Robert Harvey; 20.10.2009
comment
Я знал, что nCover и тому подобное предоставят вам такие данные при выполнении модульных тестов ... на самом деле nCover имеет свой собственный бегун nUnit как часть своего процесса. Но я не знал, что его можно использовать для анализа dll в других ситуациях. Я должен это изучить. - person ryber; 20.10.2009
comment
Роберт: Он попросил кое-что, указывающее на код, который не запускается во время выполнения его тестов. Это то, что делает инструмент покрытия кода. Тот факт, что он намеревается использовать его для удаления мертвого кода, не делает его неподходящим инструментом для работы. Вы правы, однако, стоит проверять каждую часть нетронутого кода, чтобы увидеть, действительно ли он мертв или просто не протестирован. - person eswald; 20.10.2009

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

person DaveParillo    schedule 19.10.2009

Эсвальд прав, инструмент покрытия - это именно то, что вам нужно. Наш сервер сборки ccNet запускает наши тесты Fitnesse (и модульные тесты) с NCover, чтобы проверить, насколько хорошо мы справляемся с автоматическим тестированием кода приложения. Этот вопрос - хорошее напоминание о том, что нужно проверять отчеты о покрытии на наличие неработающих приборов.

person Lee    schedule 20.10.2009