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