CodedUI Test - не может повторно использовать тест в разных средах на sharepoint - PullRequest
3 голосов
/ 02 сентября 2011

Я использую тест CodedUI для приложений, разработанных в sharepoint. Проблема в том, что он не будет работать в разных средах. Поэтому я должен перезаписать тест для каждой среды, которая является громоздкой и подвержена ошибкам.

При небольшом расследовании выясняется, что сгенерированный clientId для серверных элементов управления в веб-части отличается в каждой среде (даже если все на странице одинаково - masterpage, pagelayout, webparts).

Чтобы обойти эту проблему (почти), я подумал о редактировании SearchPropertyExpressions, чтобы просто использовать последний сегмент clientID с оператором «Содержит». Это хорошо работает, если вы вручную редактируете сгенерированный код в designer.cs.

У меня вопрос: есть ли простой и элегантный способ автоматизировать это?

Вот что я пробовал до сих пор: Я заменил установщик индекса класса PropertyExpressionCollection своей собственной функцией. Я использую эту функцию, чтобы проверить установленные значения и изменить их на строку «ctl» и заменить ее последним сегментом строки (например, заменить «ctl0123_textbox1» на «textbox1») и, наконец, использовать оператор содержимого. Работает нормально. но он не разбирается в фильтрации входных данных - ему все равно, является ли это фильтром или поиском, и он даже не знает, к какому типу управления он принадлежит. Этот метод действительно хакерский.

1 Ответ

2 голосов
/ 02 сентября 2011

Мы столкнулись с точно такой же проблемой сейчас (должны поддерживать 20 пользовательских версий нашего приложения). Общее решение, к которому мы пришли:

1) абстрагирование взаимодействия пользовательского интерфейса от бизнес-логики (у нас есть пользовательская структура для UITestControls, которая десериализует их из файла XML)

2) для каждого клиента настраивайте логику взаимодействия с пользовательским интерфейсом по мере необходимости и делайте это точно так же, как это делают разработчики для настройки приложения

3) Итак, для каждой ветви приложения («разная среда») у нас одинаковая логика, но разный уровень пользовательского интерфейса

4) теперь мы можем предоставить нашим тестам файл нотации XML UI, предназначенный для использования в этой среде, и будем рады

Это решение сложное, требует сложного кода, но дает нам необходимую гибкость. И, ну, мы не записываем наш тест, мы создаем его с нуля, так что код намного чище и более удобен в обслуживании.

Надеюсь, это поможет. Я могу предоставить более подробную информацию, если вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...