2010-11-24 6 views
1

Я унаследовал некоторые существующие проекты, в которых разработчик использовал Dependency свойства, а INotifyPropertyChanged для уведомления об изменении WPF.Свойства зависимостей тестирования устройства

Я нахожусь в положении, в котором мне нужно установить модульные тесты на все оборудование в полном объеме.

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

Как это можно достичь?

Многие разработчики, похоже, предпочитают свойства зависимостей над INotifyPropertyChanged, но они кажутся очень трудными (если не невозможными) для написания модульных тестов.

Я что-то упустил?

+0

Не могли бы вы указать, какие аспекты вы хотите проверить. – 2010-11-24 16:33:37

ответ

3

Вы можете использовать DependencyPropertyDescriptor прикрепить измененный обработчик свойства зависимостей:

DependencyPropertyDescriptor.FromProperty(TextBox.TextProperty, typeof(TextBox)).AddValueChanged(textBox, OnTextChanged); 

Однако есть slew of reasons не использовать свойство зависимостей в моделях представления. Учитывая, что вы унаследовали код, я бы предложил написать единичные тесты, чтобы подтвердить поведение кода, а затем переключиться на использование INotifyPropertyChanged.

1

Поскольку свойства зависимостей могут контролироваться в xaml, может не быть хорошего способа всесторонне протестировать их без запуска каких-либо окон, которые их используют. В этот момент вы больше не тестируете устройство.

При этом вы можете пойти после свойства зависимости, вызвав методы GetValue() и SetValue() DependencyObject.

+0

О, и я согласен, что свойства зависимостей часто кажутся больше проблем, чем они того стоят. Я лично являюсь большим поклонником того, чтобы слой представления приложения был как можно более тонким, не в последнюю очередь, ради модульного тестирования. Майкл Персис хорошо разбирается в своем эссе «Скромное диалоговое окно»: http://www.objectmentor.com/resources/articles/TheHumbleDialogBox.pdf – 2010-11-24 16:38:43

+0

Вы ** можете ** «зацепить» свойства зависимостей в коде, чтобы позвонить своему кода, поэтому вы можете проверить их! – 2010-11-24 17:43:36

Смежные вопросы