2012-01-24 8 views
7

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

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

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

ответ

7

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

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

Если вы только считается NCrunch (или The Mighty Moose и т.д. - подобный материал), но на самом деле не пробовал, вы должны дать ему идти, прежде чем принимать его не будет достаточно быстро для вас.

+0

В какой-то момент я не понял. Через 10 секунд после перехода на тестируемый класс. Я пробовал NCrunch, но я думаю, что мой компьютер не хватает власти. – BenMaddox

+0

Я использую NCrunch, и он работает гладко. Конечно, у меня есть недавний компьютер и SSD. –

+0

@BenMaddox: Какова спецификация вашей машины, и насколько реалистично было бы ее улучшить? –

2

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

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

0

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

+0

Я все равно буду вносить изменения в тестируемый класс. Я никогда не рассматривал перенос модульных тестов в базу данных. – BenMaddox

+0

Да, было бы лучше, если только новые тесты будут добавлены. – henginy