Мы писали наши интеграционные тесты (если хотите, тесты дыма), используя ViewModels напрямую. Это сработало, но нам пришлось столкнуться с некоторыми интересными проблемами, связанными с многопоточностью: что происходит, например, если ваша ViewModel вызывает отображение окна сообщения - как ваш тест закрывает окно сообщения? Мы должны были убедиться, что наше приложение работает в одном потоке, а наши тесты - в другом.
Теперь мы перешли на UIAutomation, и подобные проблемы исчезли, потому что ваши тесты и приложение явно выполняются в двух отдельных процессах. Существует некоторая кривая обучения, но UIAutomation не так страшен, как кажется на первый взгляд: я написал учебник , который может помочь вам начать работу - перейдите по ссылке, и вы также найдите несколько вспомогательных методов, которые несколько укротят API автоматизации пользовательского интерфейса.