Является ли UI Automation действительно хорошим выбором для тестирования приложений WPF?
Когда речь идет об автоматизации тестов пользовательского интерфейса, разговор всегда заканчивается автоматизацией пользовательского интерфейса. Это единственный вариант?
Мне лично это не нравится по одной главной причине - сложность. Он разработан, чтобы быть универсальным для всех типов приложений. Такая универсальность никогда не бывает бесплатной. МАУ вводит еще один уровень абстракции и довольно сложный API. Стандартные шаблоны ограничены. Поддержка пользовательских элементов управления требует много кода. Интересно, почему кто-то считает это хорошим вариантом?
В WPF есть блестящая и очень богатая абстракция, где пользовательский интерфейс представляет собой иерархическое дерево визуальных элементов. Эти элементы предоставляют множество методов, событий и свойств. Дерево поддерживает различные способы ссылки (например, относительный синтаксис источника). И мы теряем всю эту мощь в МАУ. Для чего? Для совместимости со старыми школьными приложениями и сетью? Ну, реально, кому это понадобится? Мастер на все руки - мастер никого.
Такие инструменты, как Snoop, могут внедрить себя в работающее приложение и получить полный контроль над ним. Они могут изменять значения управляющих свойств и вызывать события. Разве этого не будет достаточно? Нету. Вы бы хотели, чтобы ваш тест взаимодействовал с пользовательским интерфейсом так, как сделал бы пользователь - используя мышь и клавиатуру. Но это еще одна проблема, которую можно решить.
Поэтому мне интересно, есть ли что-то, чего я не понимаю в радости от МАУ?