В C #, что является хорошим способом улучшить петлю обратной связи модульного теста? - PullRequest
7 голосов
/ 24 января 2012

При работе над более крупными проектами сборка и запуск среды модульного тестирования может занять не менее 10 секунд.Существуют ли эффективные способы сокращения времени обратной связи?Я намерен внести небольшие изменения в один класс модульных тестов и один другой класс между тестовыми прогонами.

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

Пояснение: 10 секунд включали время для составления класса модульного теста и тестируемого класса.Возможно, моя проблема с NCrunch возникла из-за менее мощного компьютера.

Ответы [ 3 ]

7 голосов
/ 24 января 2012

Вы должны поместить каждый тестовый класс в отдельную сборку - сборка фактически является единицей компиляции.Если для перекомпиляции после просто требуется 10 секунд, то это означает, что либо у вас слишком много тестов в одной сборке, либо у вас очень медленный компьютер.Вполне может быть, что лучше выбрать лучший компьютер (или улучшить существующий с помощью большего количества памяти или SSD).

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

Если вы рассматривали только 1008 * NCrunch (или Mighty Moose и т. Д. - подобные вещи), но на самом деле это не пробовали, вы должны попробовать, прежде чем предположить, что он не будет достаточно быстрым для вас.

2 голосов
/ 24 января 2012

Вы можете проверить AutoTest.Net , который является надстройкой для Visual Studio, которая запускает ваши модульные тесты в фоновом режиме при написании кода.

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

0 голосов
/ 24 января 2012

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

...