Ответ 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, помогает при тестировании.