Ну, я не могу удержаться от публикации ответа. Подход, показанный в принятом ответе, является ловушкой обслуживания, если не сказать больше.
Переместите разработку вашего графического интерфейса в модель MVP / MVVM. WPF дружит с MVVM.
Создание тонких графических интерфейсов (с минимальным кодом / логикой), которые делегируют / синхронизируют с классом Presenter. Это означает, что вы можете написать модульные тесты для докладчика и протестировать значительную часть своего кода без пользовательского интерфейса. Напишите лишь несколько тестов пользовательского интерфейса и проведите большую часть функционального тестирования с помощью класса Presenter.
Написание тестов пользовательского интерфейса не является ответом (для нетривиальных графических интерфейсов), потому что они
- нечитаемым. Тесты пользовательского интерфейса вырождаются в длинные тайные сценарии, которые манипулируют элементами пользовательского интерфейса. трудно понять, что проверяется, поскольку как скрывает это. Если вы не можете прочитать его, вам понадобится больше времени, чтобы починить его, как только он сломается.
- медленно. Вы будете выполнять меньше тестов за единицу времени.
- ломкими. Изменение в графическом интерфейсе может нарушить ряд ваших тестов, связанных с графическим интерфейсом, даже если функциональность этого не делает. Больше тестового обслуживания.
- неустойчиво. Вам нужно потратить некоторое время на стабилизацию тестов, чтобы они каждый раз выполнялись надежно. Представляем задержки или опросы для некоторых вещей, чтобы показать.