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