Важность модульного тестирования моих просмотров при использовании шаблона MVVM? - PullRequest
3 голосов
/ 19 февраля 2010

При использовании шаблона MVVM для структурирования вашего приложения WPF вы должны получить всю свою бизнес-логику из файлов View и code-behind. Если сделать это правильно, само представление будет простым фасадом с привязками данных и привязками команд к классам ViewModel - вот где происходит магия.

Одним из ключевых преимуществ структурирования ваших приложений с использованием шаблона MVVM является то, что вы получаете возможность правильно тестировать свой код на уровне ViewModel и, следовательно, вы можете проводить модульное тестирование основных частей вашей системы. Тем не менее, в View все еще есть вероятность ошибок. Например. «Активирует ли нажатие этой кнопки эту конкретную функцию с ожидаемым параметром?» и т. Д.

Что в идеале можно сделать с функциональностью в View, касающейся модульного тестирования? Предполагая, что вы все сделаете правильно, и не потратите время на юнит-тестирование? Или у меня должны быть тесты для этого тоже? Как они должны быть созданы? ..

Ответы [ 3 ]

4 голосов
/ 19 февраля 2010

Как вы говорите, вы проверяете всю логику и поведение, используя ViewModel, с поведением, включая вычисления "видимости" и т. Д.

После того, как вы все это тестируете, тестирование представления становится намного менее сложной задачей - вы, по сути, проверяете, что все «правильно настроено». Этот тип тестирования прост для ручного тестера, так как они по существу тестируют вещи, которые появляются и «делают вещи», когда на них нажимают (слишком упрощенно, но вы понимаете).

Если вы хотите автоматизировать просмотр / интерактивное тестирование, взгляните на Project White , который позволит вам автоматизировать ваше приложение без особых усилий. Одним из преимуществ того, чтобы ваш проект хорошо работал с белыми, является то, что вы также делаете его более доступным для вспомогательных технологий.

1 голос
/ 19 февраля 2010

Одна из причин, по которой MVVM так важен, заключается в том, что пользовательский интерфейс для регрессионного тестирования - это проблема, которую трудно и дорого решить. Подавляющее большинство условий тестирования пользовательского интерфейса имеют вид «когда я выполняю это действие, я должен видеть это на экране», и автоматизировать эту вторую часть нетривиально.

С точки зрения тестирования MVVM получает то, что основная часть модульных тестов для модели представления по существу функционирует как контракт. Формально это не контракт, но он функционирует как один. Если вы проверили свой вид должным образом, и тесты модели представления достаточно подробны, вам не нужно повторно тестировать свой вид каждый раз, когда вы меняете модель представления; пока модель представления проходит свои тесты, ее поведение (в отношении представления) не должно было изменяться.

Но для того, чтобы это сработало, вы должны быть уверены в своих тестах модели представления. И это не будет работать 100% времени.

1 голос
/ 19 февраля 2010

Для тестирования графического интерфейса WPF попробуйте IcuTest .

Вы можете легко создавать модульные тесты, которые показывают окна и нажимают кнопки.

...