Кодированный тест пользовательского интерфейса для тестирования компонентов пользовательского интерфейса в изоляции
Мы собираемся написать автоматизированные тесты, используя кодированную среду пользовательского интерфейса. Мы стремимся тестировать компоненты пользовательского интерфейса в отдельности, не запуская приложение в отдельном процессе.
Например, если у нас есть всплывающее диалоговое окно в приложении для сбора данных от пользователя, мы хотели бы запустить только определенный диалог и проверить различные варианты использования, а не запускать все приложение.
Мы попытались выполнить тестирование, запустив диалоговое окно как часть теста initialize(), но он не может найти элементы управления... но тот же тест работает нормально, если я запускаю диалоговое окно отдельно.
Кто-нибудь пробовал это или посоветовал заставить это работать?
3 ответа
Coded UI Framework - очень мощный фреймворк, но у него много (и я имею в виду много) проблем.
Я бы не рекомендовал делать то, что вы пытаетесь достичь.
Кроме того, тестирование "компонентов в изоляции" - это модульное тестирование, и из моего опыта это совсем не лучшая практика для Coded UI Test.
Тестирование закодированного пользовательского интерфейса поможет вам в тестировании кросс-прикладных процессов от конца к концу, максимально приближенных к пользователю, поскольку он имитирует пользовательские вводы при нажатии клавиш и щелчках мыши.
Кроме того, поскольку пользовательский интерфейс имеет тенденцию к значительным изменениям во время разработки, и Coded UI полагается на это, я предлагаю вам использовать его в основном для регрессионного тестирования для окон, которые, как вы знаете, не изменятся в ближайшее время. Таким образом, вы будете поддерживать низкий уровень обслуживания и высокую производительность.
Надеюсь это поможет.
Кодированный пользовательский интерфейс предназначен для проверки функциональности приложений (а также веб-страниц). Кодированный пользовательский интерфейс не предназначен для тестирования фрагментов пользовательского интерфейса отдельно от их приложения. Однако было бы возможно создать приложение для тестирования, содержащее один или несколько компонентов пользовательского интерфейса, позволяющих тестировать их отдельно от реального приложения.
У тестового жгута легко может быть окно для каждого тестируемого компонента. Окно будет включать тестируемый компонент и некоторые другие простые элементы управления. Эти простые элементы управления могут отображать внутренние значения тестируемого компонента, а также использоваться для передачи значений в компонент.
Я думаю, что ваши попытки жизнеспособны, но ТОЛЬКО для ваших собственных пользовательских элементов управления. Я думаю, вам следует заняться этим в таком порядке.
- Второй экземпляр VS для захвата того, что он действительно видит в вашем контроле, когда ваш тест порождает ваш контроль.
- Обновите критерии поиска, например, имя процесса, заголовок окна.
- Потенциально добавить свойства к вашему
TestInitialize
spawner, поэтому он создает ваш контроль с полезными идентификаторами, именами или названиями. (не уверен, в каком техническом стеке находится ваш контроль) - Запустите тесты снова