Тестирование WinForms/CompositeUI GUI с SpecFlow, White, Spring и MS Test

У меня есть настольное приложение C# (CompositUI/WinForms). Это приложение подключается к веб-сервису с помощью SmartClient. Моя задача - внедрить (модифицировать) тесты для этого приложения, используя платформы SpecFlow и White. Для того, чтобы просто протестировать графический интерфейс, мне нужно смоделировать вызовы веб-службы. Класс, который подключается к нему, внедряется через Spring.net. Моя задача состоит в том, чтобы проверить, может ли приложение смоделировать вызов веб-службы во время тестов, то есть мой тестовый код должен контролировать то, что будет делать мой макет. Проблема: метод, который запускает графический интерфейс, просто не возвращает управление потоку, который его вызвал. В результате мы не можем контролировать GUI и макеты.

Поэтому у меня есть следующие вопросы:

  • выполнимо (и если да - как это сделать), чтобы запустить графический интерфейс в отдельном потоке и иметь контроль обратно в тестовом потоке?

  • Какие другие возможности запуска тестов GUI позволили бы мне контролировать ввод?

1 ответ

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

Основой, лежащей в основе всех тестов пользовательского интерфейса MVVM, является структура DI/IOC, которую вам также нужно будет выбрать.

По сути, вы создаете класс ViewModel, который вы можете протестировать. Для примера модульного тестирования с WPF - http://www.markermetro.com/2010/07/technical/mvvm-light-and-unit-testing-example/

Теперь есть несколько моментов, о которых нужно подумать. Во-первых,.NET WinForms не будет иметь серьезных изменений с помощью M$ (СПАСИБО!), А XAML/WPF не имеет пути обновления. MS$ указали, что разработчики должны начать использовать конструкторы пользовательского интерфейса WPF для настольных проектов. Количество MVVM-фреймворков, поддерживающих WinForms, ограничено, поэтому вам, возможно, придется развернуть свой собственный с помощью DI, но взгляните на следующее обсуждение Stackru по этой теме.

Во-вторых,.NET Forms к WPF к Windows Phone к веб-интерфейсу к вопросам реализации Metro UI. P&P команда Microsoft, созданная Prism для xaml/WPF, имеет некоторые анти-паттерны Depenancy Injection (Service Locator - BAD), согласно Марку Симану и его книге Dependency Injection в.NET. Prism не была обновлена ​​до Metro и реструктурирована, что вводит в заблуждение усыновителей и делает ее частично избыточной. По сути, моя точка зрения заключается в том, что получить каркас, позволяющий вашему пользовательскому интерфейсу двигаться вперед, будет сложно.

Другие вопросы по тегам