Рекомендации по платформе тестирования .NET
-
08-06-2019 - |
Вопрос
Я хочу внедрить фреймворк модульного тестирования в свою работу.Мы используем Visual Studio 2005 (хотя, возможно, в ближайшие 6 месяцев перейдем на 2008) и работаем в основном на C #.Если фреймворк имеет какую-то интеграцию с IDE, это было бы лучше всего, но я открыт для фреймворков, которые не имеют интеграции, но все еще относительно просты в настройке.Так или иначе, я собираюсь получить сопротивление, поэтому, если я смогу убедиться, что то, на что я давлю, не вызывает боли в шее, это поможет моему делу.
Очевидный выбор из проведенного мной исследования указывает на NUnit, но я хотел бы получить впечатления от кого-то, кто действительно им пользовался, прежде чем рекомендовать его моей команде.
Кто-нибудь там пользовался NUnit?Если да, то есть ли какие-либо подводные камни или ограничения, о которых я должен знать?Есть ли другие хорошие варианты?Если да, то если вы использовали при этом оба NUnit, я был бы очень признателен за представление о их сильных и слабых сторонах.
Решение
Я думаю , что NUnit
является ваш лучший выбор.С TestDriven.NET
, вы получаете отличную интеграцию внутри VS.NET
.(В Resharper также есть программа для выполнения модульных тестов, если вы ее используете). NUnit
он прост в использовании и следует устоявшейся парадигме.Вы также найдете множество проектов / руководств / руководств по его использованию, которые всегда помогают.
Другим вашим основным выбором, вероятно, является MbUnit, который все больше и больше позиционирует себя как BDD
структура выбора (совместно с Gallio http://www.gallio.org).
Другие советы
У Скотта Хансельмана был хороший подкаст по этому поводу, озаглавленный:
"Прошлое, настоящее и будущее фреймворков модульного тестирования .NET"
:
Встроенное модульное тестирование в VS 2008
это нормально, но его трудно интегрировать с CruiseControl.net
, конечно , намного сложнее , чем обычно NUnit
.
Так что идите с NUnit
если вы планируете проводить хорошие автоматизированные тесты.
Visual Studio 2008
имеет встроенный тип тестового проекта, который работает аналогично NUnit, но, очевидно, имеет гораздо более тесную интеграцию с Visual Studio
(может запускаться при каждой сборке и показывает результаты аналогично странице результатов преобразования при обновлении файлов решения), но он, очевидно, не такой зрелый, как NUnit, поскольку он довольно новый, и я не уверен в том, как он обрабатывает mocking.
Но этим стоило бы заняться, когда ваша команда переедет в VS2008
Мы использовали xUnit.net.Кажется, в нем сочетается все лучшее из nUnit
, mbUnit
и MSTest
.
Попробуйте также ПЕКС инструмент
Это собственный инструмент Microsoft, который, вероятно, скоро будет интегрирован в VSTS
и поддерживает NUnit
, MbUnit
и xUnit.net
Я также использую небольшое консольное приложение для тестирования одного класса или небольшой библиотеки.Вы могли бы скопировать и вставить код из здесь
Когда я начал модульное тестирование, я начал с NUnit
поскольку он прост в настройке и использовании, в настоящее время я использую встроенный тестовый раннер, который поставляется вместе с Resharper
, таким образом, я могу легко переключаться между кодом и результатами теста.Случайно NUnit
определяет, когда вы скомпилировали свой код, поэтому вам не нужно выполнять какие-либо обновления в NUnit
. Resharper
автоматически выполняет сборку, когда вы решаете запустить определенный тест.
VSTT 2010
это должно быть хорошим выбором, если вы ищете автоматизацию функционального тестирования.Тестирование веб-сервисов, UI
тестирование, тестирование на Biztalk и Поддержка тестирования на основе данных.Пожалуйста, взгляните на VSTT
mbUnit
стоит обратить внимание, что он обладает набором функций, сравнимых с NUnit
, он имеет свой собственный графический интерфейс или может быть интегрирован в VS
если у вас есть Resharper
.Я бы также рекомендовал Rhino Mocks
если вы делаете какие-либо TDD
.
Я бы также сказал MbUnit, мне нравится иметь возможность запускать один тест много раз, просто указав входные данные и результат прямо над тестовой функцией.Ужасное описание того, что я имею в виду, так что вот ссылка, которая показывает вам, что я имею в виду.