Определите, какие юнит-тесты нужно запускать на основе различий - PullRequest
3 голосов
/ 20 октября 2010

Кто-нибудь знает инструмент, который может помочь определить, какие модульные тесты следует запускать на основе различий из коммита?

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

Спасибо!

Ответы [ 4 ]

2 голосов
/ 26 октября 2010

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

пс. Я бы предложил разделить проект на независимые модули / сервисы и создать новые «тесты интеграции модулей», которые будут проверять интерфейсы между ними. Но внутри одного модуля / службы все модульные тесты должны выполняться как «все или ничего».

0 голосов
/ 20 октября 2010

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

Они также могут подсказать вам, какие тесты необходимо выполнить повторно, когда вы повторно подключите базу кода.По сути, он вычисляет diff для исходных файлов, которые он уже инструментировал, вместо использования diff diff, но он достигает эффекта, который вы ищете, ИМХО.

0 голосов
/ 22 октября 2010

Вы можете попробовать запустить их с помощью команды «Доказательство», у которой есть опция «Свежий», основанная на времени модификации файла. Проверьте Доказательство manpage для деталей.

Отказ от ответственности : Я новичок в модульном тестировании на Си и не использовал пробную версию, но читал об этой опции в своем исследовании.

0 голосов
/ 20 октября 2010

Вероятно, вы можете использовать make или аналогичные инструменты для этого, создав файл результатов для каждого теста и сделав файл результатов зависимым от используемых исходных файлов (а также от кода модульного теста).

...