модульный тест поведения wpf - PullRequest
7 голосов
/ 05 июля 2011

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

Например, один из классов поведения будет выглядеть примерно так:

public class DroppableContainerBehavior: Behavior<FrameworkElement>
{

        protected override void OnAttached()
        {
            base.OnAttached();

            AssociatedObject.AllowDrop = true;
            AssociatedObject.Drop += new DragEventHandler(AssociatedObject_Drop);
            AssociatedObject.DragOver += new DragEventHandler(AssociatedObject_DragOver);
            AssociatedObject.DragLeave += new DragEventHandler(AssociatedObject_DragLeave);

        }


        private void AssociatedObject_Drop(object sender, DragEventArgs e)
        {   
    ...
    }         
}

Моя проблема сейчас заключается в том, что когда я хочу создать модульный тест для метода AssociatedObject_Drop, мне нужно создать объект DragEventArgs, но этот класс запечатан.

У меня сложилось впечатление, что я делаю что-то не так .. У меня вопрос, должен ли я тестировать свои классы поведения? Поведения связаны с пользовательским интерфейсом, и обычно не стоит тестировать пользовательский интерфейс. Я прав? Может быть, мне нужно изменить код поведения, чтобы сделать его более тестируемым? есть идеи?

Спасибо за вашу помощь!

Ответы [ 2 ]

4 голосов
/ 05 июля 2011

Я бы реорганизовал код и переместил любую бизнес-логику из AssociatedObject_Drop в ее собственные функции, а затем написал свои модульные тесты для этих функций.

1 голос
/ 05 июля 2011
  1. вы можете создать объект, даже если его класс запечатан.

  2. вы можете протестировать событие повышение Drop () в своем модульном тесте

  3. Вы также можете проверить логику метода AssociatedObject_Drop (), извлекая ее код для другой функции и записывая модульный тест для этой функции.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...