Каков наилучший способ реализации BDD / TDD в .NET 2.0?[закрыто]
Вопрос
Я хочу добавить набор для тестирования в свое приложение, однако я не могу перейти на более новые платформы тестирования для .NET 3.5.
У кого-нибудь есть предложения по использованию хороших фреймворков для тестирования?
Решение
Мы используем MbUnit ( модуль ) и Рино Издевается и они доказывают, что очень хорошо работают вместе.При выполнении TDD вам почти наверняка потребуется выполнить какую-либо форму внедрения зависимостей, хотя это можно сделать вручную, стоит посмотреть на контейнер IoC, такой как Виндзорский замок.
Чтобы начать, стоит взглянуть на снимки с экрана Джона Пола Бодхуда. Блог JPB
Другие советы
НУнит и Носорог хорошо сочетаются, а контейнер для автоматической пересмешки может представлять интерес.
Если вы тоже смотрите на BDD, то Иметь вероятно, это хороший выбор.Однако, если вы просто имеете в виду стиль BDD, который относится к модульному тестированию (xSpec), хотя вам может сойти с рук добавление фреймворка (хотя такие вещи, как специфический элемент добавьте немного тактического сахара), но вы, возможно, захотите взглянуть на MSpec это тоже интересно.
Посмотрите скринкаст Роба Конери о BDD с использованием MSpec.Очень впечатляюще http://blog .wekeroad.com/mvc-storefront/kona-3/
Редактировать:Сейчас я использую этот подход: http://10printhello.com/the-one-bdd-framework-to-rule-them/
Для макетной объектной библиотеки я нашел BSD-лицензионную Носорог.Издевается быть довольно приятным.
Я добился большого успеха, используя НАнит также хорошо.
Я также использовал Нмок когда возникла необходимость в макетных объектах.В качестве дополнительного бонуса фабрика для создания ваших макетных объектов называется Mockery.
Чтобы облегчить выполнение модульных тестов, я использовал TestDriven.NET запускать модульные тесты так, как я их кодировал.Кроме того, я использовал Круиз - контроль .NET наблюдать за SVN и проверять, что каждый новый коммит создается и проходит все модульные тесты.
Вероятно, это краткое изложение того, что уже было сказано, но для TDD я лично использую Rhino Mocks и MbUnit.Rhino Mocks - это издевательский фреймворк, который является бесплатным и с открытым исходным кодом.Преимущество Rhino Mocks в том, что нам не нужно использовать волшебные строки для определения ваших ожиданий, как вы делаете в NMock.
Мне нравится MbUnit, потому что в MbUnit есть концепция RowTests, которая позволяет вам изменять входные данные для вашего метода тестирования.MbUnit также находится в свободном доступе.
Вы также хотите убедиться, что все, что вы выберете для своей платформы модульного тестирования, поддерживается вашим CI (сервером непрерывной интеграции).Nunit поддерживается в Cruise Control по умолчанию.NET и вам придется проделать небольшую дополнительную работу, чтобы заставить MbUnit работать в ccnet.
С точки зрения IDE у вас должно быть TestDriven.NET.TestDriven.NET позволяет вам щелкнуть правой кнопкой мыши и запустить тесты в IDE, а также поддерживает MbUnit, Nunit и другие.
NBehave - это библиотека BDD, которую я использовал.Я не использовал никаких других, поэтому не мог сравнить их с вами, но NBehave поддерживается Gallio из команды MbUnit, что означает, что вы можете запускать свои тесты BDD точно так же, как вы бы выполняли свои модульные тесты с TestDriven.NET .
Я бы также настоятельно рекомендовал Resharper.Вы обнаружите, что ваша производительность значительно повысится с помощью этого инструмента рефакторинга и руководства.Это поможет вам изменить ваш код по мере разработки тестов.
Надеюсь, это поможет
Мне придется громко заявить о Moq.Это чистая, легкая насмешливая структура, которая поможет вам попасть в пропасть успеха.
Инструменты тестирования, встроенные в TFS, хороши, они справятся с заданием, но часто могут быть немного громоздкими в работе.Сгенерированные отчеты, покрытие кода и несколько других частей особенно плохи, из-за них вы лысеете в 22 года, а не в 50.
Если вам действительно нравится тестирование, подумайте о том, чтобы попробовать какую-нибудь непрерывную интеграцию.Вы быстро почувствуете боль от регрессии и, возможно, это поможет вам быстрее добраться до конечной цели.
Независимо от того, чем вы занимаетесь, попробуйте несколько и посмотрите, какой из них самый естественный, если у вас есть время.Удачи и счастливого кодирования.
Использовать NUnit с TFS не так уж сложно.Есть даже проект на codeplex для реализации этого: NUnit для создания команды который даже "публикует" результаты на складе.
Я не пробовал это, но я бы посоветовал клиентам, у которых есть большие инвестиции (или которые отдают предпочтение этому инструменту перед инструментом MSTest) в NUnit, которые заинтересованы во внедрении TFS, продолжать использовать NUnit, а не пытаться преобразовать все свои существующие тесты.
НАнит доступно по адресу http://www.nunit.org Я бы предложил это даже при работе со стеком MS - поддержка фреймворков, отличных от MS, происходит в предварительных просмотрах MVC, что показывает определенное движение в правильном направлении, позволяющее всем нам настраивать наши стеки под себя.
NUnit всегда был моим любимым напитком.Однако, если вы используете TFS в качестве элемента управления версиями, я предлагаю вам придерживаться Microsoft Stack.
Я рекомендую следующее:
TestDriven.NET - Дополнение для модульного тестирования для VS, которое полностью интегрировано со всеми основными фреймворками модульного тестирования, включая NUnit, MbUnit и т.д...
Изолятор Typemock- Издевательский фреймворк для Модульное тестирование .Net
НАнит - Платформа модульного тестирования с открытым исходным кодом, написанная на C #.
Для своего проекта я с большим успехом использовал NUnit и TestDriven.NET.Вы можете либо создать отдельную библиотеку только для размещения вашего тестового кода, либо поместить ее в свой исполняемый файл или библиотеку.Все зависит от того, хотите ли вы, чтобы ваш производственный код переплетался с вашим тестовым кодом.
Для внедрения зависимостей я использую Девятый объект в моем текущем проекте и его работе все отлично.Если вы используете внедрение конструктора, вам не нужно загромождать свой код атрибутом [Inject].
Я не использовал макет библиотеки для своего проекта .NET 2.0, но для другого проекта .NET 3.5 я буду использовать Moq
Обратите внимание, что все это работает с .NET 2.0 и выше.(кроме Moq)