Я написал сообщение в блоге о том, как это сделать, вы можете найти полезные
http://rburnham.wordpress.com/2011/03/15/bdd-ui-automation-with-specflow-and-coded-ui-tests/
Плюсы и минусы теста закодированного пользовательского интерфейса, о котором я могу подумать, это ваше тестирование приложения.как именно пользователь будет его использовать.Это хорошо для приемочных испытаний, но также имеет свои ограничения.Это также действительно хорошо для сквозного тестирования.В прошлом тесты пользовательского интерфейса были хрупкими.Например, когда MS создала пользовательский интерфейс VS2010, почти все тесты пользовательского интерфейса потерпели неудачу.Основной причиной является изменение технологии.Кодированные тесты пользовательского интерфейса помогают ограничить это тем, как он соответствует элементу управления.Он использует больше совпадений, основанных на вероятности.Это означает, что он попытается найти наилучшее совпадение на основе имеющейся у него информации, такой как имя элемента управления.Для нас выбор кодовых тестов пользовательского интерфейса был из-за технологических ограничений.Наше приложение Legacy - это VB, и хотя CUIT работает не очень хорошо, я нахожусь в процессе написания расширения для получения более качественной управляющей информации, но это был наш единственный выбор.Также имейте в виду, что CUIT является новым и имеет свои ограничения.Вы должны быть готовы быть очень структурированными в том, как вы планируете свой проект, так как поддержание ваших UIMaps может быть немного ручной работой из-за текущего сквозного поведения в VS2010, например, создание CUIT из существующей записи действия всегда размещаеттест в UIMap, называемый UIMap.uitest, и нет способа изменить его или перенести в другой UIMap.Если вы используете несколько карт пользовательского интерфейса, это означает, что вам нужно будет сначала записать свои шаги, а затем использовать их в своем тесте.Однако, находясь в .net, он все еще очень гибок.
На сегодняшний день лучшая вещь в specflow - его синтаксис gerkin для удобочитаемости и живой документации.Как правило, ваши функции тестирования или поведения вашего приложения, откуда берется значение. Как правило, цель теста чуть ниже пользовательского интерфейса.Вероятность того, что тестовый прорыв будет немного меньше, когда пользовательский интерфейс меняется здесь, но там.Specflow для меня замечательно, когда ваше приложение постоянно меняется, и вы хотите, чтобы существующие функции продолжали работать.Он хорошо вписывается в среду Scrum, где вы можете написать свой сценарий как описание того, как он должен работать.Я могу видеть одно ограничение для спецпотока - он открыт для интерпретации.Из-за этого может быть легко написать тест, который не будет многоразовым и сложным в обслуживании.Мне нравится использовать более общие термины для описания моих шагов, таких как «Войти как пользователь1» вместо «Перейти на страницу входа, ввести имя пользователя и пароль, нажать кнопку входа».Более детальное его описание усложняет повторное использование, тесно связывая его с пользовательским интерфейсом.То, как на самом деле работает логин, должно зависеть от кода, а не от функции specflow.
Однако объединение 2 кажется нам более выгодным, чем просто использование кодированных тестов пользовательского интерфейса.Если мы решим полностью изменить пользовательский интерфейс, мы, по крайней мере, будем иметь ожидаемое поведение, сохраненное в наших функциях specflow, так, чтобы любой мог понять.В конце вы должны рассмотреть, как будет развиваться приложение, и тип приложения.