Советы по платформе тестирования .NET

Я хочу добавить в свою работу структуру модульного тестирования. Мы используем Visual Studio 2005 (хотя мы, возможно, перейдем к 2008 году в течение следующих шести месяцев) и работаем в основном на C#. Если у фреймворка есть какая-то интеграция с IDE, это было бы лучше всего, но я открыт для фреймворков, которые не имеют интеграции, но все еще относительно просты в настройке. Я собираюсь получить сопротивление этому так или иначе, поэтому, если я могу убедиться, что то, что я толкаю, не вызывает боли в шее, это поможет моему делу.

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

Кто-нибудь использовал NUnit ? Если да, то есть ли какие-то подводные камни или ограничения, о которых мне следует знать? Есть ли другие хорошие варианты? Если да, то если вы использовали при этом оба NUnit, я был бы очень признателен за представление о их сильных и слабых сторонах.

Ответов (10)

Решение

Я думаю, что NUnit - ваш лучший выбор. С TestDriven.NET , вы получите большую интеграцию в Visual Studio. (ReSharper также имеет средство запуска модульных тестов, если вы его используете). NUnit прост в использовании и следует устоявшейся парадигме. Вы также найдете множество проектов, руководств и руководств, использующих его, что всегда помогает.

Другой ваш основной выбор - это, вероятно, MbUnit , который все больше и больше позиционирует себя как предпочтительный фреймворк BDD (вместе с Gallio ).

Visual Studio 2008 имеет встроенный тип тестового проекта, который работает аналогично NUnit, но, очевидно, имеет гораздо более тесную интеграцию с Visual Studio (может работать в каждой сборке и показывает результаты аналогично странице результатов преобразования при обновлении. файлы решения), но он явно не такой зрелый, как NUnit, поскольку он довольно новый, и я не уверен, как он справляется с издевательством.

Но на это стоит обратить внимание, когда ваша команда перейдет на Visual Studio 2008.

Мы использовали xUnit.net . Кажется, он сочетает в себе все самое лучшее от NUnit, MbUnit и MSTest .

У Скотта Хансельмана был хороший подкаст об этом под названием:

«Прошлое, настоящее и будущее .NET Unit Testing Framework»

:

Hanselminutes # 112

Стоит взглянуть на MbUnit . Он имеет набор функций, сравнимый с NUnit. Он имеет собственный графический интерфейс или может быть интегрирован в Visual Studio, если у вас есть ReSharper . Я бы также порекомендовал Rhino Mocks, если вы занимаетесь каким-либо TDD .

Я бы сказал также MbUnit . Мне нравится иметь возможность запускать один тест много раз, просто указывая входные данные, и результат находится прямо над функцией тестирования. Это ужасное описание того, что я имею в виду, поэтому вот ссылка, которая показывает вам, что я имею в виду .

Когда я начал модульное тестирование, я начал с NUnit, поскольку его просто настроить и использовать. В настоящее время я использую встроенную программу запуска тестов, поставляемую с ReSharper . Таким образом, я могу легко переключаться между кодом и результатами тестирования.

Между прочим, NUnit определяет, когда вы скомпилировали свой код, поэтому вам не нужно выполнять какие-либо обновления в NUnit. ReSharper автоматически выполняет сборку, когда вы выбираете запуск определенного теста.

Встроенное модульное тестирование в Visual Studio 2008 - это нормально , но его сложно интегрировать с CruiseControl.NET , конечно, намного сложнее, чем с обычным NUnit.

Так что переходите к NUnit, если вы планируете иметь хорошие автоматизированные тесты.

Попробуйте также инструмент PEX .

Это собственная разработка Microsoft, которая, вероятно, скоро будет интегрирована в VSTS . Он поддерживает NUnit, MbUnit и xUnit.net .

Я также использую небольшое консольное приложение для тестирования одного класса или небольшой библиотеки. Вы можете скопировать и вставить код отсюда .

VSTT 2010 (Visual Studio Team System Test) должен быть хорошим выбором, если вы ищете автоматизацию функционального тестирования. Тестирование веб-сервисов, тестирование пользовательского интерфейса, тестирование BizTalk и поддержка тестирования на основе данных. Пожалуйста, посмотрите VSTT .