Подтвердить что ты не робот

Настройка Visual Studio для Visual Studio

Я разработчик С#, новый для TDD, желающий поэкспериментировать с этой методологией разработки.

Моя текущая настройка - Visual Studio 2010 + Resharper (очень удобная для запуска Unit Tests - настройка сеанса Unit Test и есть кнопки Run and Debug Tests).

Тем не менее, я чувствую, что могут быть способы ускорить TDD еще больше (например: при сохранении файла тестов автоматически запускать тесты в нем).

Итак, эксперты TDD, использующие Visual Studio, можете поделиться советами о том, как сделать процесс TDD более продуктивным?

4b9b3361

Ответ 1

Инструменты

Я обычно привязываю ярлык клавиатуры к Context Run. Вы можете сделать это в параметрах Visual Studio, нажав "Инструменты", "Параметры", а в "Среда → Клавиатура" вы можете найти "ReSharper.ReSharper_ReSharper_UnitTest_RunContext". Я считаю, что Resharper 6 назначит ему сочетание клавиш, Ctrl + T, R. Обычно я всегда назначал его Alt + ;.

Это вызовет модульные тесты в контексте. Поэтому, если ваш курсор находится внутри теста, вы только что закончили писать; этот тест запускается. Если курсор находится внутри Test Class/Test Fixture; который запускается.

Вы также можете сделать несколько R # templates. Обычно я создаю шаблон под названием Test, который выглядит так:

[Test] //NUnit Change attribute to [TestMethod] if MSTest.
public void $NAME$()
{
    $END$
}

Я предпочитаю шаблоны R # над фрагментами кода Visual Studio, потому что вы можете создавать шаблоны уровня "Solution", которые хранятся в XML файле вместе с файлом решения. Поэтому, когда вы проверяете это; все ваши коллеги также имеют доступ к шаблонам; или даже с другой рабочей станции.

Таким образом, вы можете продолжать добавлять тесты без использования всех шаблонов. Вы даже можете создавать шаблоны файлов для целых светильников.

Реальный трюк, чтобы заставить его двигаться, - это изучение всех сочетаний клавиш. Когда вы узнаете их и овладеете ими; ваши руки начинают делать это, даже не задумываясь. Добавьте/измените тест, и вы начнете автоматически нажимать команду контекстного запуска (независимо от того, что вы можете использовать), даже не думая.

Непрерывная интеграция

Другой несвязанный инструмент; но очень мощный каждый TDDer должен быть знаком с сервером непрерывной интеграции (CI). Это позволит вам запускать тесты всякий раз, когда вы проверяете исходный контроль. В конечном итоге проекты достаточно большие, чтобы получить набор из 1000 тестов. Запуск их все время самостоятельно становится непрактичным. Сервер CI, например TeamCity, будет запускать ваши тесты на сервере при регистрации. Затем он сообщит обо всем, что нарушено, когда оно готово; поэтому вы можете продолжать работать, пока выполняете другие тесты. Возможно, вы и не подумали, что сломали, но сделали. Есть и другие хорошие бесплатные; например Hudson. EDIT: как отметил Питер в комментариях; CruiseControl.NET - это CI-сервер с открытым исходным кодом, который существует некоторое время; определенно стоит проверить.

В моем типичном руководстве проводятся тесты, которые, как я думаю, являются relavant. Я использую NUnit, который имеет атрибут [Category]. Я запускаю все категории, на которые, как я думаю, влияет; и пусть сервер CI позаботится об остальном.

Дисциплина кодирования

Тесты также являются кодом. Они должны быть реорганизованы; и поддерживается. Я видел, как многие люди отказывались от тестирования, потому что у них закончились тесты спагетти. Храните ваши тесты устройств на небольшом, едином блоке. Он начинает замедлять вас и вашу команду, когда тесты хрупки. Вообще, не вдаваясь в подробности; следуя принципам SOLID, помогает при тестировании.

Ответ 3

Сохранение времени сборки. Вам нужно будет часто запускать тесты. Вот несколько вещей, которые я делаю.

  • Следите за событиями предварительной сборки, которые замедляют работу.
  • Убедитесь, что вы только строите проекты по мере необходимости. В Visual Studio 2010 проверьте Tools - Options - Projects and Solutions - Build and Run - Создайте только проекты запуска и зависимости от запуска
  • Убедитесь, что ваши тесты работают быстро. Модульные тесты не должны быть выполнены. Должна быть возможность запускать десятки до сотен в секунду на текущей машине.
  • Сплит-модули и тесты интеграции. Часто выполняйте тесты модулей. Разумеется, запустите все тесты, прежде чем вы перейдете к системе управления общей версией.

Ответ 4

Я нахожу трюк настройки NUnit для автоматического запуска тестов при перезагрузке очень изящных.

Tools > Settings > Test Loader (tree) > Assembly Reload > Re-run last tests run

Это сжимает тесты построения и запуска в один шаг.

Инструменты сделают вас быстрее до точки... кроме того, реальный импульс возникает из-за отражения вашего метода TDD. Чтение, практика, отражение и адаптация.

Мои личные дополнения

  • Трек TDD ритм (Red-Green-Refactor)
  • отслеживать время, проведенное в состоянии разбитых сборок (ошибки компиляции/проверки)
  • запустить тесты по сборке и представлению результатов в среде IDE
  • получить следы сбоя в среде IDE

Получили первые три, сделанные как часть VS-расширения... WIP.

Обновление: это было неустановлено, но... упорядочить все обычные материалы. например использовать инструменты для рефакторинга, использовать шаблоны кода/фрагменты для часто используемых шаблонов кода, стать единым с вашей IDE (основные сочетания клавиш ко всем частотно-зависимым действиям, привязывать нажатия клавиш к тем, у которых их нет)