Какая структура Unit test и как начать работу (для asp.net mvc)

Я никогда не тестировал модульное тестирование, но теперь я готов попробовать.

Какая структура лучше всего подходит для начинающих? Плюсы и минусы

что я должен прочитать перед тем, как начать кодирование? Книги/Статьи/Код/Блоги

есть ли какие-либо "примеры проектов" с открытым исходным кодом?

Я буду использовать его с asp.net mvc/С#.

Ответ 1

Если вы интегрировали Unit Testing в Visual Studio (я думаю, что это часть Professional и лучше), начните с этого, потому что он интегрирован. Недостаток, насколько мне известно, нет тестового бегуна вне Visual Studio или Team Foundation Server, который дисквалифицирует его для автоматического тестирования, но я не уверен, насколько актуальна эта информация.

Другие альтернативы: xUnit.net, NUnit и mbUnit. Я не могу говорить о плюсах и минусах из-за отсутствия опыта, но теперь я использую xUnit.net, потому что: а) я знаю, что есть рабочий шаблон ASP.net MVC с версии 1.1 и b) Assert.Throws - это просто сексуальна. Я использую бесплатную личную версию TestDriven.net в качестве моего тестового Runner в Visual Studio.

Существует руководство "Как начать" для xUnit: http://www.codeplex.com/xunit/Wiki/View.aspx?title=HowToUse

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

Ответ 2

Я использую один, запеченный в Visual Studio, с добавлением TestDriven.Net для пунктов меню правой кнопки мыши, которые позволяют мне запускать одиночные тесты с/без отладчика. Я начал использовать NUnit. Любой из них, вероятно, в порядке. Я предпочитаю использовать первую в VS, поэтому мне не нужно поддерживать оба инструмента, но есть некоторые преимущества для интеграции, особенно если вы используете Team System.

Я считаю, что TestDriven.Net поддерживает множество различных фреймворков. Вы также захотите использовать анализатор охвата, чтобы помочь вам понять, какие части вашего кода были покрыты тестами, и помочь вам определить другие тесты, которые могут потребоваться. Вам может понадобиться система Team, чтобы получить испеченный анализ покрытия для VS, но всегда есть NCover (поставляется с TestDriven.Net).

Я предлагаю посмотреть Прагматическое тестирование модуля в С# из Pragmatic Programmers или Test Driven Development с С#. Оба будут иметь примеры.

Rob Conery StoreFront пример - хороший пример ASP.NET MVC.

Ответ 3

Rob Conery создал серию видео, в котором показано, как создать приложение электронной коммерции с помощью MVC. Он использует полный подход testdriven (используя встроенную тестовую среду в visual studio 2008)

Ответ 4

Я рекомендую вам заглянуть в Gallio Automation Platform для .NET, поскольку он обеспечивает нейтральное (и бесплатное) средство, которое может реализовать несколько единиц тестовые рамки для вас под одним инструментом графического интерфейса. Он создан ребятами из-за mbUnit.

Мой основной профессионал для любой модульной системы тестирования - это то, что он дает вам отличное чувство уверенности в вашем коде, а практика TDD становится очень естественной задачей.

Основной вывод состоит в том, что веб-формы ASP.NET(которые я пытаюсь скомпоновать) не просто тестируются модулем, поэтому ASP.NET MVC настолько привлекателен для людей. Еще один аргумент заключается в том, что вам нужно понять, что вам нужно будет реорганизовать тесты так же, как и код, который они выполняют, если не больше.

Ответ 5

Единственное, что я хотел бы добавить: a) дать им все попробовать и посмотреть, что вам нравится [это ответ дерьмо, но у всех есть свои собственные симпатии и антипатии, чтобы "попробовать", карта играет много] и какие точки трения вы встретите и b) просмотрите хорошее сравнение первичных фреймворков unit test/a > на сайте XUnit CodePlex.

Ответ 6

Я не пытаюсь вас смутить, если вы разработчик и хотите протестировать проекты ASP.NET MVC, тогда используйте XUnit, это хорошо и разработано сотрудником Microsoft. У этого есть консольные и gui бегуны, которые помогают в автоматическом тестировании. XUnit теперь используется большинством разработчиков.

Ответ 7

Давайте начнем с некоторых основ об этом в первую очередь, хорошо? Единичное тестирование относится к тестированию на самом маленьком фрагменте кода, как правило, функции/процедуры/метода в коде. Я бы предложил взглянуть на "Рефакторинг" Мартина Фаулера как хорошую книгу о том, как модульные тесты играют роль в рефакторинге.

В зависимости от того, как вы настроите свой код, вы можете захотеть посмотреть на насмешливые фреймворки, такие как RhinoMocks, NMocks,.Net MockObjects, например, чтобы вы могли настроить тестовые приборы для обработки условий предварительного исполнения, которые могут потребоваться для вызова, Вероятно, существует более чем несколько примеров тестирования модульных объектов, и учебные пособия по asp.net-mvc должны иметь пример тестирования или два.

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

Ответ 8

Я использую Selenium RC и Moq. До сих пор я не сталкивался со слишком многими областями, которые я не смог проверить и получить хороший охват.

Взгляните на образец кода Selenium RC. Это довольно прямолинейно и легко следовать...