Как добавить свойство в пользовательский элемент управления ASP.Net или веб-страницу, и чтобы это свойство было прочитано в ходе кодированного тестирования Microsoft? (ЗПИФ) - PullRequest
2 голосов
/ 14 декабря 2011

Я использую тестирование Microsoft coded-ui (CUIT) в VS 2010 Ultimate для тестирования сайта ASP.Net 4.0.

У меня есть исходный код для сайта ASP.Net, поэтому я могу его изменитьпри необходимости.

У меня работает запись / воспроизведение.

Я могу написать простые операторы assert в тестовых методах, чтобы проверить свойства потомков UITestControl (ссылки HTML, таблицы и т. д.)и сравните их с ожидаемыми значениями.

Я хочу добавить свойства к пользовательским элементам управления (ASCX) и страницам на моем сайте, чтобы передать полезные значения в код тестирования.

Например, яиметь пользовательский элемент управления, который реализует меню, которое отображает различные наборы элементов меню в зависимости от роли текущего пользователя.

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

Я нашел в сети информацию о том, как это сделать в WinForms, но этот код опирается на доступность, которая, как мне кажется,полезно только для CUIT с WinForms.Кроме того, я нашел информацию о том, как сделать это с WPF / SL.

Ответ может быть связан с получением свойства UITestControl.NativeElement, затем с вызовом метода, который переопределяет GetProperty (), но у меня нет 'я не смог заставить этот подход работать.

Может ли кто-нибудь предоставить краткий пример кода, показывающий, как добавить свойство на страницу ASCX или ASPX, где это свойство может быть записано в коде C #, и читатьпо коду кодированного тестирования пользовательского интерфейса Microsoft (CUIT)?

Спасибо!

Адам Лефферт http://www.leffert.com

1 Ответ

1 голос
/ 19 декабря 2011

Я не нашел ответа на этот вопрос, но я написал некоторый код для решения основной проблемы.

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

Есть еще как минимум два случая, которые мне нужно охватить:

1) На страницу добавлены сторонние элементы управления, например ASPxGridView, ASPxTreeView и т. Д.

2) Элементы, которые не отображаются в пользовательском интерфейсе, например данные профиля пользователя для текущего пользователя.

Когда вы запускаете код проверки CUIT с веб-приложением, у вас есть данные DOM, т. Е. Дерево, представляющее содержимое объектной модели документа и содержимое окна браузера. Нет объекта Request, объекта .Net Page и т. Д. Эти данные DOM доступны через объект UIMap.

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

Итак, я создал интерфейс кода (ITestable), который содержит словарь строковых значений и список дочерних элементов ITestable.

В обработчике событий LoadComplete главной страницы я создаю ITestable для главной страницы и заполняю список дочерними объектами ITestable для дочерней страницы, которые сами могут содержать списки дочерних элементов.

Я сериализую этот объект в JSON, а затем сохраню его в скрытом поле на главной странице.

Я добавил скрытое поле в UIMap.

Код проверки теста десериализует ITestable, а затем просматривает его на предмет значений, требующих проверки.

Элементы управления создают свои собственные объекты ITestable, поэтому они могут легко заполнять объекты значениями, которые могут потребоваться для проверки, вместо того, чтобы заставлять тестовый код манипулировать пользовательским интерфейсом, пытающимся прочитать значения проверки.

Например, древовидное представление может возвращать свое содержимое без кода тестирования, который должен нажимать на каждый узел и пытаться прочитать значение, отображаемое там. Дополнительные свойства (видимые, включенные и т. Д.) Можно сохранить в словаре значений для каждого объекта ITestable.

CUIT имеет несколько очень мощных функций. Я был бы очень признателен, если бы Microsoft документировала некоторые передовые практики для решения этих нетривиальных задач проверки. Я прочитал документацию Microsoft, но почти ничего не нашел по этой теме для веб-приложений.

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