Как правильно проверить вид в MVVM? - PullRequest
4 голосов
/ 10 августа 2009

Я видел несколько статей о модульном тестировании моделей представления в MVVM и о том, как сами тесты являются потребителями моделей представления, тестируя функциональность viewModel и модели. Тем не менее, мне остается удивляться, как я прохожу тестирование представлений (UI), чтобы убедиться, что они правильно подключены к моим моделям представлений. Я не хочу писать тест, который, например, нажимает кнопку, чтобы убедиться, что что-то записано в БД, так как это эффективно тестирует мою ВМ, что я уже сделал.

Например, я хотел бы иметь возможность написать тест, чтобы убедиться, что кнопка подключена к определенной команде. Поэтому не позволяйте никому приходить и удалять команду кнопки, делая ее более неработоспособной.

Возможно ли это? спасибо.

Ответы [ 2 ]

3 голосов
/ 10 августа 2009

Но что, если кто-то (надеюсь, дизайнер) захочет изменить Button на MenuItem? Ваш тест сломается, и вам придется это исправить. Одним из главных преимуществ MVVM является то, что дизайнеры действительно могут свободно размещать и изменять интерфейс по своему усмотрению, не требуя от разработчиков слишком много времени. Написание юнит-тестов против пользовательского интерфейса аннулирует это благо.

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

Что касается того, как вы на самом деле тестируете представление в «изоляции». , , Я думаю, что самый простой способ - использовать модели представлений с внедренными имитационными сервисами. Ваши модели представлений могут использовать локатор сервисов для захвата зависимых сервисов, поэтому ваши модульные тесты могут внедрять фиктивные сервисы. Затем можно использовать комбинацию ссылок на именованные элементы, обход дерева визуалов и API-интерфейсы автоматизации пользовательского интерфейса WPF, чтобы утверждать, что для разных визуальных элементов свойства установлены так, как ожидалось.

0 голосов
/ 10 августа 2009

Я думаю, что есть что-то от Telerik (Искусство тестирования), которое может помочь автоматизировать необработанный интерфейс. http://www.artoftest.com/products/webaii.aspx Хотя сейчас я посмотрел, что это Silverlight, а не WPF. Надеюсь, это хорошая отправная точка, по крайней мере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...