ASP.NET - Как делают Вас Модульный тест WebControls?

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

 Widget _tapDetectionControls() {
    return Flex(
      direction: Axis.horizontal,
      children: <Widget>[
        Expanded(
          flex: 1,
          child: GestureDetector(
            onTap: _leftRotation,
          ),
        ),
        Expanded(
          flex: 1,
          child: GestureDetector(
            onTap: _rightRotation,
          ),
        ),
      ],
    );
  }

  void _leftRotation() {
    controller.reverse();
  }

  void _rightRotation() {
    controller.forward();
  }
13
задан littlecharva 27 August 2008 в 20:19
поделиться

8 ответов

Можно сделать образцовый контроллер представления или архитектуру типа образцового предъявителя представления, не используя полноценную платформу. Вы уже узнали, что ui-компоненты поблочного тестирования являются трудными. Существуют пути вокруг этого, но Вы, вероятно, не хотите идти тем путем. Обычно это будет делать Ваши тесты очень трудно для поддержания, больше кошмара обслуживания - что-то, что программисты могут обойтись без:-)

Попытка выделить функциональность, которую Вы хотите протестировать в классе "контроллера" или "предъявителя". Тогда протестируйте тот класс. Для создания этого более тестируемым, можно скрыть usercontrol класс (представление) позади интерфейса и сделать контроллер, или предъявитель говорят с представлением через интерфейс. Тем путем можно копировать представление в тестах.

я знаю, что это походит на большую работу, и на обходное решение, но походит, если Вы привыкаете к этому, это - действительно хорошая архитектура, которая делает намного легче изменить ui поведение. Можно всегда начинать использовать "реальную" mvc платформу при реальной необходимости в ней:-)

8
ответ дан 1 December 2019 в 23:33
поделиться

Можно также смотреть на этот Иглу Носорога платформа. Это - поставленная под угрозу платформа MVC для WebForms.

0
ответ дан 1 December 2019 в 23:33
поделиться

Вы нашли самую большую болевую точку ASP.NET. Насколько изолировано, частные классы, которые препятствуют поблочному тестированию.

Это - главная причина, что люди TDD будут использовать платформу MVC (ASP.NET MVC, замок MonoRail), поскольку это обеспечивает четкое разделение из Ваших шаблонов представления и Вашей логики контроллера. Контроллеры являются полностью тестируемыми.

3
ответ дан 1 December 2019 в 23:33
поделиться

Это - старая статья к настоящему времени, но я использовал NUnitASP для записи тестов nunit для asp.net WebControls в 2004. Та статья дает подробный пример тестирования простого управления с помощью их понятия создания соответствующего класса "Тестера", который инкапсулирует детали управления от Вас тесты. Банка Тестера (должна) также быть в том же блоке, как Ваше управление так может совместно использовать некоторые вещи между ними (например, служебные функции, константы, и т.д.).

Я использовал технику (и другие используют варианты техники) все еще сегодня для тестирования очень сложных средств управления.

Я надеюсь, что это полезно.

1
ответ дан 1 December 2019 в 23:33
поделиться

Упомянутая выше платформа MVC является лучшим способом протестировать то, что делает управление. Однако тестирование, как это работает, несколько отличается.

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

0
ответ дан 1 December 2019 в 23:33
поделиться

Ues assembly:InternalsVisibleTo атрибут и Вы будете в состоянии получить доступ к тем членам парламента, не занимающим официального поста.

Помещенный это в Ваш AssemblyInfo.cs проекта веб-элемента управления (под Свойства узел)

[assembly:InternalsVisibleTo("YourTestProjectName")]
5
ответ дан 1 December 2019 в 23:33
поделиться

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

Надеюсь, это поможет ...

1
ответ дан 1 December 2019 в 23:33
поделиться

Ивонна может тестировать WebControls изолированно в контексте Asp.Net Просто вызовите session.GetControl ("Path.ascx") и убедитесь, что у него есть все необходимые свойства.

0
ответ дан 1 December 2019 в 23:33
поделиться
Другие вопросы по тегам:

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