Как реализовать TDD в ASP.NET WebForms

За приличную случайность.

Случайный цвет

`#${crypto.getRandomValues(new Uint32Array(1))[0].toString(16).padStart(8, 0).slice(-6)}`

Случайный альфа, случайный цвет.

`#${crypto.getRandomValues(new Uint32Array(1))[0].toString(16).padStart(8, 0)}`
31
задан Jeremy Sullivan 27 June 2009 в 17:03
поделиться

4 ответа

Microsoft представила ASP.NET MVC, потому что они думали, что могут зарабатывать деньги на неиспользованном рынке - те, кто считает веб-формы слишком «тяжеловесными», и кто программирует с использованием более легкого фреймворка. . Сюда входят те, кто привык к парадигме MVC.

Сюда также входят те, кто не мог понять, как выполнять модульные тесты в веб-формах, и кто хочет использовать модульные тесты и TDD.

Способ выполнения он с веб-формами, как и все остальное, должен разделить все, кроме кода пользовательского интерфейса, на отдельные классы в библиотеке классов. Используйте TDD для разработки этих классов.

Следующий уровень споров заключается в том, необходимо ли использовать TDD для разработки оставшейся части кода: разметки, клиентского кода, взаимодействия с пользователем и т. Д. Мой ответ таков: если вы Остальное изолировали и проверили, что не стоит использовать для этого TDD.

Учтите: ваши страницы должны иметь определенный вид. Собираетесь ли вы написать неудачный модульный тест, чтобы доказать, что вы правильно используете CSS? Чтобы доказать, что вы используете правильные стили CSS? Я так не думаю.


Чтобы уточнить: в TDD мы начинаем с неудачного модульного теста. Затем мы вносим простейшие возможные изменения, которые сделают тест успешным.

Представьте себе использование TDD для веб-страницы. Какие тесты вы завершите с ошибкой?

  1. Проверьте правильность формата страницы HTML
  2. Проверьте правильность заголовка страницы
  3. Проверьте, что страница содержит Вы используете правильные стили CSS? Я так не думаю.


    Чтобы уточнить: в TDD мы начинаем с неудачного модульного теста. Затем мы вносим простейшие возможные изменения, которые сделают тест успешным.

    Представьте себе использование TDD для веб-страницы. Какие тесты вы завершите с ошибкой?

    1. Проверьте правильность формата страницы HTML
    2. Проверьте правильность заголовка страницы
    3. Проверьте, что страница содержит Вы используете правильные стили CSS? Я так не думаю.


      Чтобы уточнить: в TDD мы начинаем с неудачного модульного теста. Затем мы вносим простейшие возможные изменения, которые сделают тест успешным.

      Представьте себе использование TDD для веб-страницы. Какие тесты вы завершите с ошибкой?

      1. Проверьте правильность формата страницы HTML
      2. Проверьте правильность заголовка страницы
      3. Проверьте, что страница содержит
        1. Метка «Введите идентификатор»
        2. Текстовое поле идентификатора
        3. Сетка данных
        4. Кнопка «Перейти»
      4. Проверка того, что сетка данных пуста после GET
      5. Проверка загрузки сетки данными из клиент 1, когда в текстовое поле введено «1» и нажата кнопка «Перейти».

      И ни один из вышеперечисленных тестов на внешний вид страницы. Ни один из них не проверяет поведение какого-либо JavaScript на странице на стороне клиента.

      Я думаю, что это глупо. Вместо этого проверьте свой метод DAL, который извлекает данные на основе идентификатора. Убедитесь, что он возвращает правильный идентификатор для идентификатора 1. Затем, сколько времени потребуется, чтобы вручную протестировать страницу, чтобы убедиться, что она выглядит правильно, вы можете ввести «1» и нажать «Перейти», и что данные, отображаемые в таблице, являются правильными данными для клиента 1?

      Разработка через тестирование и автоматические модульные тесты предназначены для проверки поведения. Пользовательский интерфейс веб-формы в основном декларативный. Здесь наблюдается большое «рассогласование импеданса».

39
ответ дан 27 November 2019 в 22:34
поделиться

Во-первых, очень сложно тестировать WebForms. Но если вы разбиваете логику на контроллеры / презентаторы, такие как шаблон MVC / MVP, вы можете по крайней мере протестировать презентаторов.

Псевдокод

Default.aspx

public void Page_Init(object sender, EventArgs e) {
 _presenter = new DefaultPresenter(IDependencyOne, IDependencyTwo etc) //Init new presenter, either from IoC container of choose or "new-it-up"
}

public void Save() {
 _presenter.Save(txtValue.Text)
}

Тогда вы можете легко протестировать презентатора по крайней мере изолированно =)

3
ответ дан 27 November 2019 в 22:34
поделиться

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

0
ответ дан 27 November 2019 в 22:34
поделиться

Вы можете использовать официальную среду Unittest Framework: http://msdn.microsoft.com/en-us/library/ms182526.aspx

0
ответ дан 27 November 2019 в 22:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: