Я не нашел ответа на этот вопрос, но я написал некоторый код для решения основной проблемы.
Я понял, что добавление свойств в пользовательские элементы управления сохранит данные проверки вместе с тестируемым элементом управления, но только для случая, когда раздел пользовательского интерфейса был реализован как пользовательский элемент управления.
Есть еще как минимум два случая, которые мне нужно охватить:
1) На страницу добавлены сторонние элементы управления, например ASPxGridView, ASPxTreeView и т. Д.
2) Элементы, которые не отображаются в пользовательском интерфейсе, например данные профиля пользователя для текущего пользователя.
Когда вы запускаете код проверки CUIT с веб-приложением, у вас есть данные DOM, т. Е. Дерево, представляющее содержимое объектной модели документа и содержимое окна браузера. Нет объекта Request, объекта .Net Page и т. Д. Эти данные DOM доступны через объект UIMap.
Я не хочу оборачивать сторонние элементы управления в пользовательские элементы управления, потому что это может нарушить работу тестируемого приложения, что заставит меня переписать код приложения, который касается свойств и событий сетки, представления дерева, и т. д. Слишком навязчиво для тестирования кода.
Итак, я создал интерфейс кода (ITestable), который содержит словарь строковых значений и список дочерних элементов ITestable.
В обработчике событий LoadComplete главной страницы я создаю ITestable для главной страницы и заполняю список дочерними объектами ITestable для дочерней страницы, которые сами могут содержать списки дочерних элементов.
Я сериализую этот объект в JSON, а затем сохраню его в скрытом поле на главной странице.
Я добавил скрытое поле в UIMap.
Код проверки теста десериализует ITestable, а затем просматривает его на предмет значений, требующих проверки.
Элементы управления создают свои собственные объекты ITestable, поэтому они могут легко заполнять объекты значениями, которые могут потребоваться для проверки, вместо того, чтобы заставлять тестовый код манипулировать пользовательским интерфейсом, пытающимся прочитать значения проверки.
Например, древовидное представление может возвращать свое содержимое без кода тестирования, который должен нажимать на каждый узел и пытаться прочитать значение, отображаемое там. Дополнительные свойства (видимые, включенные и т. Д.) Можно сохранить в словаре значений для каждого объекта ITestable.
CUIT имеет несколько очень мощных функций. Я был бы очень признателен, если бы Microsoft документировала некоторые передовые практики для решения этих нетривиальных задач проверки. Я прочитал документацию Microsoft, но почти ничего не нашел по этой теме для веб-приложений.