Тестирование представления в приложении WPF MVMM - PullRequest
3 голосов
/ 07 октября 2010

Я только начинаю в захватывающем мире разработки WPF, будучи разработчиком C ++ в течение многих лет.

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

Это все хорошо, и аккуратно отделяет тестирование логики приложения от пользовательского интерфейса приложения.НО, он не предоставляет решения для реального тестирования самого интерфейса.Несмотря на то, что представление обычно содержит очень мало логики, оно по-прежнему может содержать огромное количество ошибок различного типа.

Каков текущий уровень техники в тестировании самого представления?

Спасибо, Том

Ответы [ 2 ]

5 голосов
/ 07 октября 2010

Это всегда обоюдоострый меч.Я вижу это как попытку схватить низко висящий фрукт и построить оттуда.

Теоретически пурист MVVM заявил бы, что в коде View абсолютно нет логики.Использование Prism, например, может помочь облегчить это, а также другие различные структуры там.Итак, подойдя к этому с этой точки зрения, он начинает доходить до точки, в которой логика не существует в представлении ... достаточно справедливо, тогда мы собираемся начать тестирование привязок?Однако вы можете, в зависимости от размера приложения, какова отдача от этих инвестиций?

Что, я думаю, сводится к тому, где вы проводите черту?Например, даже если вы тестируете View, вы, скорее всего, будете подключаться к коду, в этот момент вы тестируете белый ящик.Затем вы можете утверждать, что угол черного ящика действителен только для тестирования без внутренних хуков.Вы можете видеть, что это становится круглым кошмаром.

В общем, я сосредоточился на больших билетах и ​​пошел оттуда, проверяя, что было возможно с выделенным временем.

Подумайте об этомкстати ... с помощью пользовательского интерфейса вы можете начать это фиаско тестирования раскраски на каждой кнопке, а также размещения и т. д. Это глупо для меня.Автоматизируйте большую часть тестирования пользовательского интерфейса на уровне Model, ViewModel и, если хотите, протестируйте привязки вашего View.Кроме того, я бы предложил специальную ручную работу, которую каждый разработчик пользовательского интерфейса должен делать на своей рабочей станции.

1 голос
/ 07 октября 2010

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

...