В C#, что является хорошим способом улучшить петлю обратной связи модульного теста?
При работе над более крупными проектами сборка и запуск среды модульного тестирования может занять не менее 10 секунд. Существуют ли эффективные способы сокращения времени обратной связи? Я намерен внести небольшие изменения в один класс модульных тестов и один другой класс между тестовыми прогонами.
Я рассмотрел некоторые другие подходы. Я не вижу никакого способа скомпилировать и запустить один тестовый класс и зависимости. Я мог бы увеличить количество проектов в решении, чтобы каждая сборка занимала меньше времени для компиляции, но это вызывает другие проблемы. Похоже, что NCrunch уменьшает необходимость запуска тестов вручную, но он все равно собирает полные сборки.
Пояснение: 10 секунд включали время для составления класса модульного теста и тестируемого класса. Возможно, моя проблема с NCrunch была из-за менее мощного компьютера.
3 ответа
Вы должны будете поместить каждый тестовый класс в отдельную сборку - сборка фактически является единицей компиляции. Если перекомпиляция занимает всего 10 секунд после изменения класса тестирования, это говорит о том, что либо у вас слишком много тестов в одной сборке, либо у вас очень медленный компьютер. Вполне возможно, что лучший способ продвинуться в улучшении машины (или в улучшении существующей за счет увеличения памяти или SSD).
Я сам использую NCrunch, и хотя он по-прежнему компилирует полные сборки, тот факт, что он делает это в фоновом режиме, означает, что, как правило, к тому времени, когда я делаю мысленный вдох, тесты перестраиваются и запускаются. Кстати, NCrunch хорошо работает, если у вас есть несколько процессоров и виртуальный диск - вы можете указать, где он собирается, а также сколько процессоров он может использовать.
Если вы только рассматривали NCrunch (или The Mighty Moose и т. Д. - подобные вещи), но на самом деле не пробовали, вы должны попробовать, прежде чем предположить, что он не будет достаточно быстрым для вас.
Вы можете проверить AutoTest.Net, который является надстройкой для Visual Studio, которая запускает ваши модульные тесты в фоновом режиме, когда вы пишете код.
Таким образом, вы можете рассматривать ваши модульные тесты как ошибки / предупреждения компилятора и получать обратную связь в реальном времени.
Декларативные модульные тесты фактически обнуляют время компиляции, но только если позволяет ваша архитектура. Например, перемещение модульных тестов в базу данных хорошо сработало для нас в крупномасштабном проекте.