Как лучше всего проводить модульное тестирование веб-страниц ASP.NET 2.0?

Какие-либо предложения? Использование Visual Studio на C#.

Есть ли какие-то конкретные инструменты или методы для решения этой проблемы?

Обновлять:

Извините, мне следовало быть более конкретным. Я использую ASP.Net 2.0 и больше искал такой инструмент, как jUnit для Java. Я взглянул на NUnit и NUnitAsp, и это выглядит очень многообещающим. И я даже не знал, что в Visual Studio Pro есть набор для тестирования, поэтому я рассмотрю все эти варианты (этим летом я только начал использовать Visual Studio / Asp.net / C#).

Ответов (7)

Решение

Парень, это довольно общий вопрос. Я сделаю все возможное, но будьте готовы увидеть, что я промахнусь на милю.

Предположения

  1. Вы используете ASP.NET, а не простой ASP
  2. Вы действительно хотите не тестировать свои веб-страницы, а логику, стоящую за ними. Модульное тестирование фактических страниц .ASPX довольно болезненно, но для этого существуют фреймворки. NUnitAsp - один из них.

Первое, что нужно сделать, - это организовать (или спланировать) свой код так, чтобы его можно было протестировать. Двумя наиболее популярными в то время шаблонами проектирования для этого были MVP и MVC. Оба отделяют логику приложения от представления, чтобы вы могли протестировать логику, не мешая представлению (веб-страницам).

Будет эффективен либо MVP, либо MVC. Преимущество MVC в том, что фреймворк Microsoft почти готов к работе .

После того, как вы выбрали шаблон фреймворка, который способствует тестированию, вам необходимо использовать инструмент модульного тестирования. NUnit - хорошая отправная точка. В Visual Studio Professional есть набор для тестирования , но NUnit + TestDrive.NET также работает в среде IDE.

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

Примерно год назад в Polymorphic Podcast была серия скринкастов, в которых было довольно хорошее вступительное руководство по реализации MVP в ASP.NET. Реализованные таким образом модульные тесты становятся более естественными.

http://polymorphicpodcast.com/shows/mv-patterns/

Взгляните на http://selenium.openqa.org/, он предлагает хороший автоматизированный способ создания модульных тестов, подключаемых к браузеру. есть хороший плагин firefox для записи тестов, который может использовать практически любую среду модульного тестирования. У нас была презентация / демонстрация на собрании нашей локальной группы пользователей в прошлом месяце, и это выглядело потрясающе.

NUnit - это то, что вам нужно. Вы можете найти здесь несколько ссылок:

  1. http://nunitasp.sourceforge.net/tutorial/
  2. Модульное тестирование NUnit страниц ASP.NET, базовых классов, элементов управления и других виджетов с использованием Cassini, Скотт Хансельман

WatiN - лучшее, что я нашел. Он интегрируется в модульное тестирование Visual Studio или nunit, и вы можете делать практически все, что вам нужно в браузере (щелкать ссылки, отправлять формы, искать текст / изображения и т. Д.), Плюс он написан в .net, поэтому вам не нужно установить Ruby (как и для watir, который, тем не менее, отличный инструмент)

Эти фреймворки полезны для интеграционного тестирования, но они не могут обеспечить модульное тестирование, то есть тестирование представления, изолированного от персистентности, бизнес-логики и т. Д.

Для модульного тестирования веб-форм Asp.Net, а также MVC можно использовать Ivonna . Например, вы можете имитировать доступ к своей базе данных и убедиться, что фиктивные записи отображаются в сетке данных. Или вы можете издеваться над поставщиком членства и протестировать сценарий входа в систему без необходимости переходить на страницу входа и вводить свои учетные данные, как при тестировании интеграции.

Лучше всего отделить логику модели от представления и тщательно протестировать модель с помощью NUnit или аналогичного. Тестирование взаимодействия пользователей с веб-страницей может быть утомительным.

Если вы действительно хотите провести модульное тестирование взаимодействия пользователей с веб-страницей, некоторые из доступных инструментов, таких как waitn, кажутся хорошими, добавлением к тому, о котором я слышал, является Selenium.