WPF - PRISM (CAL) - автоматизированное функциональное тестирование
В настоящее время я новичок в проекте, который был начат 1 год назад.
В этом проекте используются C#, WPF, PRISM (CAL), Entity Framework, LINQ и т. Д. Приложение выполняется с использованием шаблона MVVM.
Есть несколько модульных тестов, но меня попросили провести функциональное тестирование, потому что большинство ошибок было обнаружено при использовании всех компонентов вместе.
Я начал делать проект MSTEST. Моя цель состояла в том, чтобы запустить весь бэкэнд приложения (модель и модель представления), смоделировать события пользовательского интерфейса и проверить модификации модели, обращающиеся к или более свойствам модели представления.
Моим первым гостем было создать контекст Entity (модель), инициализировать все модули PRISM и начать публиковать события в модели представления, чтобы изменить мою модель и проверить результаты в той же или других моделях представления. Мне пришлось:
- Переопределить призму Boostrapper класса
- Создайте простое приложение (потому что под MSTEST кажется, что
System.Windows.Application.Current
нулевой). Я только что получил класс отSystem.Windows.Application
,
Я могу получить доступ ко всем своим реализациям интерфейсов, используя UnityContainer. У меня сейчас проблема в том, что IEventAggregator
не работает. События не проводятся. Я не хочу издеваться над агрегатором событий, потому что хочу, чтобы он запускал мои события между модулями призмы (я делаю функциональное тестирование, а не модульное тестирование).
Я нашел способ заставить это работать, играя с Dispatcher
а также DispatcherFrame
, но я получаю запас в RegionManager
это похоже на провал.
У меня вопрос: есть ли лучший способ провести функциональное / интеграционное тестирование, не показывая интерфейс пользователя?
1 ответ
Если вы делаете функциональное тестирование, вы должны показать пользовательский интерфейс. Например, если какой-либо дизайнер пользовательского интерфейса решает поместить текстовое поле поверх флажка, и вы больше не можете щелкнуть флажок, это необходимо проверить в функциональном тесте.
Для этого вы кодировали тесты пользовательского интерфейса в Visual Studio, вы столкнетесь с некоторыми проблемами с WPF, в основном элементами управления, которые вы не можете легко получить в отображении кодированного пользовательского интерфейса. Но кроме этого он хорошо работает, легко встраивает тесты и хорошо интегрируется с TFS Build Agents и MSBuild.