Ответ 1
Ответ, который сложился за последние несколько лет, заключается в том, что вы не применяете TDD к графическому интерфейсу, вы проектируете графический интерфейс таким образом, чтобы там был только один слой, который вы можете разрабатывать с помощью TDD. Gui сводится к тривиальному отображению элементов управления в ViewModel, часто с привязками к структуре, поэтому для TDD игнорируется.
Это известно как Модель представления (Fowler) Model-View-ViewModel и DataModel-View-ViewModel.
Этот подход удаляет слой GUI из TDD и модульного тестирования. Это не означает, что графический интерфейс никогда не тестируется, а просто признает, что нецелесообразно проводить автоматическое тестирование графического интерфейса, в частности, как часть TDD. Интеграция и тестирование пользователей должны охватывать GUI.
Джош Смит 2009 WPF статья является подробным объяснением MVVM с некоторыми тестированиями.
Совсем недавно, Houssem Dellai 2016 видео Создание модульных тестов для приложений Xamarin Forms показывает интерфейс XAML со связанной ViewModel и проходит через создание unit test проект