CUIT (Тесты кодированного пользовательского интерфейса) + MVVM - Должен ли я начать называть все свои элементы управления сейчас? - PullRequest
6 голосов
/ 20 февраля 2012

По сути, с MVVM у меня есть много неназванных элементов управления, потому что больше нет необходимости давать имя (или x: Name) элементам управления.

Но, глядя на закодированные тесты пользовательского интерфейса, кажетсякак будто мне придется пройти и снова назвать все мои элементы управления?Или я просто неправильно понял, что я читаю, и есть MVVM-дружественный способ сделать CUIT?

Ответы [ 3 ]

4 голосов
/ 22 февраля 2012

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

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

3 голосов
/ 10 января 2014

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

Смотрите сообщение, которое я нашел на [используя идентификатор автоматизации]. 1 Вот примеры из его сообщения:

<MyControl AutomationProperties.AutomationId="AnUniqueValue"/>
protected override string GetAutomationIdCore() 
{ 
    return (AutomationProperties.GetAutomationId(_owner));
}
1 голос
/ 20 февраля 2012

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

Я не полностью изучил критерии поиска, но я предполагаю, что гораздо сложнее создать кодовый тест пользовательского интерфейса с неназванными элементами управления. Ах, хорошо, я думаю Name / x: Имя будет возвращаться.

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