Почему модульный тест полезен, когда представление не тестируется в MVVM? - PullRequest
1 голос
/ 21 мая 2010

Почему модульный тест полезен, когда представление не тестируется в MVVM?

В MVVM у нас есть модели, модели представления и представления. Заявленное преимущество заключается в том, что MVVM может сделать тестируемые модули моделей и view = models. Но все три стороны принадлежат одному заявлению. Если представления не являются модульно тестируемыми, зачем тестировать два других? Улучшит ли качество модульное тестирование двух других и оставит один не тестированный?

Удаление всего кода из представлений звучит для меня странно. Как насчет кода, который обрабатывает только чистые операции пользовательского интерфейса?

Ответы [ 4 ]

0 голосов
/ 21 мая 2010

Есть много мест, где мы можем допускать ошибки в представлениях: 1. На самом деле триггеры - это логика программы. 2. Если мы введем неправильный путь привязки, мы не получим никаких ошибок во время выполнения, но представление просто не будет отображать правильные данные. 3. Если мы свяжем команду с неверным обработчиком в модели представления, программа не будет работать должным образом. Все это необходимо проверить. Но если мы только протестируем модель представления, программа все еще не проверена. В чем же выгода?

0 голосов
/ 21 мая 2010

Отчасти идея заключается в том, что ваш взгляд должен быть настолько тривиальным, что он «не нуждается» в модульном тестировании. Тем не менее, есть возможность модульного тестирования графического интерфейса, см. http://www.c2.com/cgi/wiki?TestFirstUserInterfacesPrinciples

0 голосов
/ 21 мая 2010

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

Среди тех вещей, которые находятся в представлении, но не являются тестируемыми модулями, анимации и привязки. Использование декларативных форм (то есть XAML) для обоих помогает снизить общую нестабильность системы. После того, как эти работы, они продолжают работать. Кроме того, если взять логику приложения и отделить ее от «сахара» пользовательского интерфейса, то это гарантирует, что изменяющаяся логика приложения не дестабилизирует логику интерфейса.

Кроме того, если у вас действительно сложная анимация в коде, вам не помешает абстрагировать ее в тестируемом виде.

0 голосов
/ 21 мая 2010
  1. Представления в MVVM глупы, вы даете им данные, которые они показывают пользователю, готово.
  2. Действия успокоительные, вы можете проверить это в модульных тестах.
  3. Вы можете проверить, какой вид используется для маршрута
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...