Как лучше всего реализовать BDD / TDD в .NET 2.0?

Я хочу добавить в свое приложение набор для тестирования, однако я не могу перейти на более новую среду тестирования для .NET 3.5.

Есть ли у кого-нибудь предложения по использованию хороших фреймворков для тестирования?

Ответов (12)

Решение

Мы используем MbUnit и Rihno Mocks, и они очень хорошо работают вместе. При выполнении TDD вам почти наверняка потребуется выполнить некоторую форму внедрения зависимостей, хотя это можно сделать вручную, поэтому стоит взглянуть на контейнер IoC, такой как Castle Windsor .

Для начала стоит взглянуть на скриншоты Джона Пола Бодхуда. Блог JPB

Для библиотеки Mock Object я обнаружил, что Rhino.Mocks под лицензией BSD довольно приятен.

NUnit доступен на http://www.nunit.org. Я бы посоветовал это сделать даже при работе со стеком MS - поддержка фреймворков, не относящихся к MS, происходит в превью MVC, что показывает определенное движение в правильном направлении, что позволяет нам все, чтобы настроить наши стеки по размеру.

NUnit всегда был моим фаворитом. Однако, если вы используете TFS в качестве исходного элемента управления, я предлагаю вам придерживаться Microsoft Stack.

Я также добился больших успехов в использовании NUnit .

Я также использовал NMock, когда возникла потребность в фиктивных объектах. В качестве дополнительного бонуса фабрика для создания ваших фиктивных объектов называется Mockery.

Чтобы облегчить выполнение модульных тестов, я использовал TestDriven.NET для запуска модульных тестов, как я кодировал. Кроме того, я использовал Cruise Control .NET для просмотра SVN и проверки того, что каждый новый коммит строится и проходит все модульные тесты.

Использование nUnit с TFS не так уж сложно. Для реализации этого есть даже проект на codeplex: NUnit for Team Build, который даже «публикует» результаты на складе.

Я не пробовал, но я бы посоветовал клиентам, которые сделали большие инвестиции (или которые сильно отдают предпочтение этому инструменту MSTest) в nUnit, которые заинтересованы во внедрении TFS, продолжать использовать nUnit, а не пытаться преобразовать все свои существующие тесты.

NUnit и Rhino хорошо подходят, и контейнер с автосмешением может быть интересен.

Если вы тоже смотрите на BDD, то NBehave , вероятно, будет хорошим выбором. Однако если вы имеете в виду стиль BDD, который относится к модульному тестированию (xSpec), хотя вы можете обойтись добавлением фреймворка (хотя такие вещи, как specunit, действительно добавляют некоторый синтаксический сахар), но вы, возможно, захотите взглянуть на MSpec , также интересно.

Я должен отдать должное Moq . Это чистый световой фреймворк, который ведет вас к успеху.

Инструменты тестирования, встроенные в TFS, в порядке. Они справятся со своей работой, но часто могут быть немного громоздкими в работе. Сгенерированные отчеты, покрытие кода и некоторые другие части особенно плохи. Они заставляют вас лысеть в 22 года, а не в 50.

Если вам действительно нравится тестирование, подумайте о том, чтобы попробовать непрерывную интеграцию. Вы быстро почувствуете боль от регресса, и эта боль потенциально поможет вам быстрее достичь конечной цели.

Независимо от того, что вы делаете, попробуйте несколько и посмотрите, какой из них наиболее естественный, если у вас есть время. Удачи и счастливого кодирования.

Вероятно, это краткое изложение того, что уже было сказано, но для 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. С помощью этого инструмента рефакторинга и руководства вы заметите, что ваша продуктивность значительно повысится. Это поможет вам изменить код по мере разработки тестов.

Надеюсь это поможет

Я рекомендую следующее:

TestDriven.NET - надстройка модульного тестирования для VS, которая полностью интегрирована со всеми основными фреймворками модульного тестирования, включая NUnit, MbUnit и т. Д.

Typemock Isolator - фиктивный фреймворк для модульного тестирования .Net

NUnit - фреймворк для модульного тестирования с открытым исходным кодом на C#.

Посмотрите скринкаст Роба Конери на BDD с помощью MSpec. Очень впечатляет http://blog.wekeroad.com/mvc-storefront/kona-3/

изменить: теперь я использую этот подход: http://10printhello.com/the-one-bdd-framework-to-rule-them/

Для своего проекта я с большим успехом использовал NUnit и TestDriven.NET. Вы можете создать отдельную библиотеку только для размещения тестового кода или поместить ее в свой исполняемый файл или библиотеку. Все зависит от того, хотите ли вы, чтобы ваш производственный код был связан с вашим тестовым кодом.

Для внедрения зависимостей я использую NInject в своем текущем проекте, и он отлично работает. Если вы используете внедрение конструктора, вам не нужно загромождать свой код атрибутом [Inject].

Я не использовал фиктивную библиотеку для своего проекта .NET 2.0, но для другого проекта .NET 3.5 я буду использовать Moq .

Обратите внимание, что все это работает с .NET 2.0 и выше. (кроме Moq)