2016-03-29 3 views
0

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

Мы проверяем, что элемент списка, который мы собираемся удалить, существует, затем нажмите «Удалить», команда «Удалить» удаляет его из связанной с ним коллекции. Мы утверждаем, что элемент списка больше не существует, но он все еще говорит, что он делает

мы думали, что мощь потребовалось несколько секунд, чтобы полностью избавиться от объекта, чтобы мы поместили 20-секундную паузу, прежде чем утверждать, но по-прежнему говорит, что существует

автоматизация идентификаторы для ListItems поистине уникальны, они состоящий из строки + идентификатор номера в списке + значение текстового блока в элементе списка, поэтому он определенно не путается с другим элементом

Любые мысли на это были бы весьма полезными?

+0

Ну, первый шаг - запустить приложение и посмотреть, удаляет ли кнопка удаления объекты (визуально или еще что-то). Если ваша автоматизация проверяет, сохранился ли объект в памяти, то либо еще что-то еще ссылается на него, либо сборщик мусора еще не получил его, первый из них является потенциально более крупной проблемой. –

+0

. Что делает тест между удалением и утверждать? Обновлена ​​ли карта пользовательского интерфейса? Можно ли утверждать, что вы находите старые данные? – AdrianHHH

+0

@GordonAllocman Кнопка удаления работает как ожидалось, она удаляет элемент из наблюдаемой коллекции, и представление обновляется, как и ожидалось, посредством привязки к наблюдаемой коллекции. Что касается, возможно, пребывания в памяти - это была наша первоначальная мысль, поэтому 20-секундная задержка –

ответ

2

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

Обновление карты пользовательского интерфейса очищает кеш и заставляет последующие карты доступа к пользовательскому интерфейсу выполнять другой поиск. Таким образом, репозиционирование кеша.

Нет необходимости очищать весь кеш. Часто требуется только часть обновления, и это можно сделать, вызвав метод ...Find() соответствующего элемента управления пользовательского интерфейса.

Аналогичная проблема покрыта here in Stack Overflow, а также показывает способ понимания того, какая часть карты пользовательского интерфейса нуждается в обновлении.

Смежные вопросы