Что вы хотите сделать, так это определить, что такое новый код, и убедиться, что новый код покрыт некоторым тестом.
Определение покрытия кода в целом можно выполнить с помощью любого из множества инструментов покрытия тестами. Многие инструменты тестового покрытия могут просто переоснастить все ваше приложение, а затем вы можете запустить тесты для определения покрытия.
Наша (Semantic Designs) линейка инструментов тестового покрытия может определить из списка измененных файлов, только отдельные файлы, которые необходимо переинструментировать, а при тщательной организации тестирования — только те тесты, которые необходимо выполнить повторно. Это сведет к минимуму затраты на повторный запуск тестов, и вы все равно получите те же данные об общем покрытии. (На самом деле эти инструменты определяют, какие тесты необходимо провести, основываясь на изменениях на уровне метода).
Когда у вас есть данные о покрытии тестами, вы хотите знать, что конкретно новый код покрыт некоторыми тестами. Вы можете сделать это небрежно, просто используя данные тестового покрытия, если вы знаете, какие файлы были изменены, настаивая на том, чтобы измененные файлы имели 100% покрытие. На практике это, наверное, не работает.
Вместо этого вы можете воспользоваться инструментами Smart Differencer от SD, чтобы дать более точный ответ. Эти инструменты сравнивают два языковых файла и указывают, где изменения, используя синтаксис языка (например, выражение, оператор, объявление, тело метода, а не только измененные строки исходного кода) и концептуальные операции редактирования (перемещение, копирование, удаление, вставка, переименование). идентификатор внутри блока). Дельты SmartDifferencer, как правило, меньше и точнее, чем то, что вы получили бы от простого инструмента сравнения.
Из вывода SmartDifferencer легко извлечь список измененных строк. Можно вычислить пересечение этого для каждого файла со строками, охваченными данными тестового покрытия. Если измененные строки не полностью входят в набор покрытых строк, то «новый» код не тестировался, и вы можете поднять флаг, остановить регистрацию или что-то еще, чтобы сигнализировать о том, что ваша политика проверки была нарушена.
Инструменты TestCoverage и SmartDifferencer не поставляются в готовом виде с этим вычислением, сделанным за вас, но это должен быть довольно простой сценарий для реализации.
person
Ira Baxter
schedule
02.03.2011