Поделиться через


Пошаговое руководство. Создание, изменение и обслуживание закодированного теста пользовательского интерфейса

В этом пошаговом руководстве создается простое приложение Windows Presentation Foundation (WPF), чтобы с его помощью продемонстрировать создание, редактирование и обслуживание закодированного теста пользовательского интерфейса.В этом пошаговом руководстве приведены решения для корректировки тестов с проблемами, связанными со временем и рефакторингом элементов управления.

Обязательные компоненты

Для этого пошагового руководства требуется следующее:

  • Visual Studio Ultimate или Visual Studio Premium.

Создание простого приложения WPF

  1. В меню Файл выберите команду Создать и выберите Проект.

    Откроется диалоговое окно Новый проект.

  2. В области Установлено разверните узел Visual C#, а затем выберите Окна.

  3. Над средней областью проверьте, что в раскрывающемся списке требуемой версии .NET Framework выбрано .NET Framework 4.5.

  4. В средней области выберите шаблон Приложение WPF.

  5. В текстовом поле Имя введите "SimpleWPFApp".

  6. Выберите папку для хранения проекта.В текстовом поле Расположение введите имя папки.

  7. Нажмите кнопку ОК.

    Откроется конструктор WPF для Visual Studio, где будет открыто окно MainWindow проекта.

  8. Если панель элементов еще не открыта, откройте ее.Выберите меню Вид и выберите пункт Панель элементов.

  9. В разделе Все элементы управления WPF перетащите элементы управления Кнопка, CheckBox и ProgressBar в окно MainWindow в рабочей области конструирования.

  10. Выберите элемент управления "Кнопка".В окне "Свойства" измените значение свойства Content с Button на "Start".

  11. Выберите элемент управления ProgressBar.В окне "Свойства" измените значение свойства Maximum с 100 на 1000.

  12. Выберите элемент управления Checkbox.В окне "Свойства" очистите свойство IsEnabled.

    Простое приложение WPF

  13. Дважды щелкните элемент управления "кнопка", чтобы добавить событие выбора.

    В редакторе кода откроется файл MainWindow.xmal.cs с на новом событии button1_Choose.

  14. В начале класса MainWindow добавьте делегат.Этот делегат будет использоваться для индикатора выполнения.Чтобы добавить делегат, добавьте следующий код.

            private delegate void ProgressBarDelegate(
            System.Windows.DependencyProperty dp, Object value);
    
  15. В методе button1_Choose, добавьте следующий код:

                double progress = 0;
    
                ProgressBarDelegate updatePbDelegate =
            new ProgressBarDelegate(progressBar1.SetValue);
    
                do
                {
                    progress ++;
    
                    Dispatcher.Invoke(updatePbDelegate,
                        System.Windows.Threading.DispatcherPriority.Background,
                        new object[] { ProgressBar.ValueProperty, progress });
                    progressBar1.Value = progress;
                }
                while (progressBar1.Value != progressBar1.Maximum);
    
                checkBox1.IsEnabled = true;
    

Проверка корректной работы приложения WPF

  1. В меню Отладка выберите Начать отладку или нажмите клавишу F5.

  2. Выберите Запуск.

    Через несколько секунд индикатор выполнения должен дойти до 100%.Элемент управления "Checkbox" теперь включен.

  3. Закройте приложение SimpleWPFApp.

Создание и запуск закодированного теста пользовательского интерфейса для приложения SimpleWPFApp

  1. В обозревателе решений щелкните решение правой кнопкой мыши, выберите Добавить и затем выберите Создать проект.

    Откроется диалоговое окно Добавление нового проекта.

  2. В области Установлено разверните узел Visual C#, а затем выберите Тест.

  3. В средней области выберите шаблон Проект с закодированными тестами пользовательского интерфейса.

  4. Нажмите кнопку ОК.

    В обозревателе решений, новый проект закодированных тестов пользовательского интерфейса CodedUITestProject1 добавляется в решение.

    Откроется диалоговое окно Сформировать код для кодированного теста ИП.

  5. Выберите параметр Записать действия, изменить карту ИП или добавить утверждения и выберите команду ОК.

    UIMap – построитель закодированных тестов пользовательского интерфейса и окно Visual Studio свернуто.

    Дополнительные сведения о параметрах в этом диалоговом окне см. в разделе Создание закодированных тестов пользовательского интерфейса.

  6. Найдите и запустите созданное ранее приложение SimpleWPFApp.По умолчанию приложение расположено по пути C:\Users\<имя_пользователя>\Documents\Visual Studio 2012\Projects\SimpleWPFApp\SimpleWPFApp\bin\Debug\SimpleWPFApp.exe

  7. Создайте на рабочем столе ярлык для приложения SimpleWPFApp.Щелкните правой кнопкой мыши файл SimpleWPFApp.exe и выберите команду Копировать.Щелкните правой кнопкой мыши на рабочем столе и выберите Вставить ярлык.

    СоветСовет

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

  8. Выберите Начать запись в UIMap – построитель закодированных тестов пользовательского интерфейса.Через несколько секунд построитель кодированных тестов ИП будет готов к работе.

  9. С помощью ярлыка на рабочем столе запустите приложение SimpleWPFApp.exe.

  10. В приложении SimpleWPFApp, выберите Запуск.

    Через несколько секунд индикатор выполнения должен дойти до 100%.Элемент управления "Checkbox" теперь включен.

  11. Выберите поле для элемента управления CheckBox.

  12. Закройте приложение SimpleWPFApp.

  13. На UIMap - построитель закодированных тестов пользовательского интерфейса, выберите Сформировать код.

  14. В имени метода введите SimpleAppTest и выберите команду Добавление и создание.Через несколько секунд закодированный тест пользовательского интерфейса будет сформирован и добавлен в решение.

  15. Закройте окно "UIMap – Построитель кодированных тестов ИП".

    В редакторе кода откроется файл CodedUITest1.cs.

Запустите закодированный тест пользовательского интерфейса.

  • В файле CodedUITest1.cs найдите метод CodedUITestMethod, щелкните его правой кнопкой мыши и выберите Выполнить тесты.

    Пока выполняется закодированный тест пользовательского интерфейса, открыто приложение SimpleWPFApp.Выполняются шаги, которые вы выполняли в предыдущей процедуре.Однако когда тест попытается установить флажок для элемента управления CheckBox, в окне результатов теста появится сообщение, что тест не пройден.Это происходит потому, что тест пытается установить флажок, но не учитывает, что элемент управления CheckBox недоступен, пока индикатор выполнения не дойдет до 100%.Эту и аналогичные проблемы можно решить с помощью различных методов UITestControl.WaitForControlXXX(), которые доступны для кодированных тестов пользовательского интерфейса.В следующей процедуре демонстрируется использование метода WaitForControlEnabled() для исправления ошибки, в результате которой тест выполнен неудачно.Дополнительные сведения см. в разделе Настройка закодированного теста пользовательского интерфейса таким образом, чтобы во время воспроизведения он дожидался определенных событий.

Редактирование и повторный запуск закодированного теста пользовательского интерфейса

  1. В окне "Результаты теста" щелкните правой кнопкой мыши неудачный тест и выберите команду Просмотреть подробные результаты теста.

    Отобразится CodedUITestMethod1[Results].

  2. В разделе Трассировка стека ошибок выберите первую ссылку рядом с TestProject1.UIMap.SimpleAppTest().

    Откроется файл UIMap.Designer.cs, где в коде будет выделено место ошибки.

    // Select 'CheckBox' check box
    uICheckBoxCheckBox.Checked = this.SimpleAppTestParams.UICheckBoxCheckBoxChecked;
    
  3. Для исправления ошибки можно с помощью метода WaitForControlEnabled() сделать так, чтобы закодированный тест пользовательского интерфейса ждал включения элемента управления CheckBox перед переходом к этой строке.

    Предупреждающее замечаниеВнимание

    Не изменяйте файл UIMap.Designer.cs.Любые изменения кода, внесенные в файл UIMapDesigner.cs, будут перезаписываться каждый раз при создании кода с помощью построителя кодированных тестов ИП.Если требуется изменить записанный метод, необходимо скопировать его в файл UIMap.cs и переименовать.Файл UIMap.cs можно использовать для переопределения методов и свойств в файле UIMapDesigner.cs.Необходимо удалить ссылку на исходный метод в файле CodedUITest.cs и заменить ее именем переименованного метода.

  4. В обозревателе решений, выберите UIMap.uitest в проекте закодированных тестов пользовательского интерфейса.

  5. Открыть контекстное меню для UIMap.uitest и выберите команду Открыть.

    Закодированный тест пользовательского интерфейса откроется в редакторе закодированных тестов пользовательского интерфейса.Теперь закодированный тест пользовательского интерфейса можно просматривать и редактировать.

  6. В области Действие с ИП выберите метод теста, который требуется переместить в файл UIMap.cs или UIMap.vb file, чтобы упростить функциональность пользовательского кода: в этом случае он не будет переписываться при каждой компиляции кода теста.

  7. Нажмите кнопку Переместить код на панели инструментов редактора закодированных тестов пользовательского интерфейса.

  8. Откроется диалоговое окно Microsoft Visual Studio.Он указывается, что метод будет перемещен из файла UIMap.uitest в файл UIMap.cs и что он больше не сможет изменить метод в редакторе закодированных тестов пользовательского интерфейса.Выберите Да.

    Метод теста удаляется из файла UIMap.uitest и перестает отображаться в области "Действия с ИП".Чтобы изменить перемещенный тестовый файл, открыть файл UIMap.cs из обозревателя решений.

  9. На панели инструментов Visual Studio выберите команду Сохранить.

    Изменения метода теста сохраняются в файле UIMap.Designer.

    Предупреждающее замечаниеВнимание

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

  10. Переименуйте метод из SimpleAppTest() в ModifiedSimpleAppTest().

  11. Добавьте в файл следующую инструкцию.

    using Microsoft.VisualStudio.TestTools.UITesting.WpfControls;
    
  12. Перед найденной ранее строкой кода с ошибкой добавьте следующий метод WaitForControlEnabled().

    uICheckBoxCheckBox.WaitForControlEnabled();
    
    // Select 'CheckBox' check box
    uICheckBoxCheckBox.Checked = this.SimpleAppTestParams.UICheckBoxCheckBoxChecked;
    
  13. В файле CodedUITest1.cs найдите метод CodedUITestMethod и либо закомментируйте его, либо переименуйте ссылку на исходный метод SimpleAppTest() и замените его на новый метод ModifiedSimpleAppTest().

    [TestMethod]
            public void CodedUITestMethod1()
            {
                // To generate code for this test, select "Generate Code for Coded UI Test" from the shortcut menu and select one of the menu items.
                // For more information on generated code, see https://go.microsoft.com/fwlink/?LinkId=179463
                //this.UIMap.SimpleAppTest();
                this.UIMap.ModifiedSimpleAppTest();
            }
    
  14. В меню Построение выберите Построить решение.

  15. Щелкните правой кнопкой мыши метод CodedUITestMethod и выберите команду Выполнить тесты.

  16. Теперь закодированный тест пользовательского интерфейса успешно выполнит все этапы тестирования, в окне результатов теста будет показано сообщение Тест пройден.

Рефакторинг элемента управления в приложении SimpleWPFApp

  1. В конструкторе в файле MainWindow.xaml выберите элемент управления "Кнопка".

  2. В верхней части окна "Свойства" выберите рядом с элементом Кнопка значение button1 и измените его на "buttonA".

  3. В меню Построение выберите Построить решение.

  4. В меню Тест выберите Окна, а затем пункт Представление теста.

  5. В, выберите CodedUITestMethod1 в столбце Имя теста и затем пункт Выполнить выделенный фрагмент на панели инструментов.

    Тест не был пройден, поскольку закодированный тест пользовательского интерфейса не смог обнаружить кнопку, которая раньше была сопоставлена в UIMap как button1.Таким образом рефакторинг может влиять на закодированные тесты пользовательского интерфейса.

  6. В окне "Результаты теста" щелкните правой кнопкой мыши неудачный тест и выберите команду Просмотреть подробные результаты теста.

    Отобразится CodedUITestMethod1[Results].

  7. В разделе Трассировка стека ошибок выберите первую ссылку рядом с TestProject1.UIMpa.SimpleAppTest().

    Откроется файл UIMap.Designer.cs.В коде выделено место, где произошла ошибка.

    // Choose 'Start' button
    Mouse.Click(uIStartButton, new Point(27, 10));
    

    Обратите внимание, что в строке кода, приведенной ранее в этой процедуре, используется имя UiStartButton — имя UIMap до рефакторинга.

    Чтобы исправить ошибку, можно добавить элемент управления, для которого был выполнен рефакторинг, в UIMap с помощью построителя кодированных тестов ИП.Можно обновить код теста для использования кода, как показано в следующей процедуре.

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

  1. В файле CodedUITest1.cs, в методе CodedUITestMethod1(), щелкните правой кнопкой мыши, выберите Сформировать код для кодированного теста ИП и выберите Использовать построитель кодированных тестов ИП.

    Откроется окно "UIMap – Построитель кодированных тестов ИП".

  2. В помощью созданного ранее ярлыка на рабочем столе запустите созданное ранее приложение SimpleWPFApp.

  3. В окне "UIMap – Построитель кодированных тестов ИП" переместите инструмент в виде перекрестия на кнопку Пуск приложения SimpleWPFApp.

    Кнопка Пуск будет заключена в голубую рамку, построителю кодированных тестов ИП потребуется несколько секунд, чтобы обработать данные для выбранного элемента управления и отобразить его свойства.Обратите внимание, что AutomationUId называется buttonA.

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

  5. На панели инструментов выберите Добавить элемент управления на карту элементов управления ИП.

    Сообщение о состоянии в нижней части окна подтвердит действие следующим сообщением: Выбранный элемент управления добавлен на карту элементов управления ИП.

  6. На UIMap – построитель закодированных тестов пользовательского интерфейса, выберите Сформировать код.

    Отобразится окно "Построитель кодированных тестов ИП - формирование кода" с примечанием, что новый метод не требуется и что код будет сформирован только для изменений карты элементов управления ИП.

  7. Выберите Сформировать.

  8. Закройте приложение SimpleWPFApp.exe.

  9. Закройте диалоговое окно "UIMap – Построитель кодированных тестов ИП".

    Обработка изменений в карте элементов управления ИП в окне "UIMap – Построитель кодированных тестов ИП" займет несколько секунд.

  10. В обозревателе решений откройте файл UIMap.Designer.cs.

  11. В файле UIMap.Designer.cs под конструктором в классе сформированного кода UIMainWindow разверните область Свойства.Обратите внимание, что свойство public WpfButton UIStartButton1 было добавлено.

  12. В свойстве UIStartButton1 разверните область критериев поиска.Обратите внимание, что SearchProperties имеет значение "buttonA":

    public WpfButton UIStartButton1
            {
                get
                {
                    if ((this.mUIStartButton1 == null))
                    {
                        this.mUIStartButton1 = new WpfButton(this);
                        #region Search Criteria
                        this.mUIStartButton1.SearchProperties[WpfButton.PropertyNames.AutomationId] = "buttonA";
                        this.mUIStartButton1.WindowTitles.Add("MainWindow");
                        #endregion
                    }
                    return this.mUIStartButton1;
                }
            }
    

    Теперь закодированный тест пользовательского интерфейса можно изменить, чтобы использовать только что сопоставленный элемент управления.Как указано в предыдущей процедуре, если требуется переопределить какие-либо методы или свойства в закодированном тесте пользовательского интерфейса, это нужно делать в файле UIMap.cs.

  13. В файле UIMap.cs добавьте конструктор и задайте свойство SearchProperties свойства UIStartButton, чтобы использовать свойство AutomationID со значением "buttonA":

    public UIMap()
            {
                this.UIMainWindowWindow.UIStartButton.SearchProperties[WpfButton.PropertyNames.AutomationId] = "buttonA";
            }
    
  14. В меню Построение выберите Построить решение.

  15. В представлении теста выберите CodedUITestMethod1 в столбце Имя теста. На панели инструментов щелкните Выполнить выделенный фрагмент.

    Теперь закодированный тест пользовательского интерфейса успешно пройдет все этапы тестирования.В окне результатов теста отобразится состояние Тест пройден.

Внешние ресурсы

Ff977233.collapse_all(ru-ru,VS.110).gifВидеоклипы

ссылка на видео

ссылка на видео

ссылка на видео

Ff977233.collapse_all(ru-ru,VS.110).gifСтороны в лаборатории

Virtual Lab MSDN: Знакомство с создания закодированных тестов пользовательского интерфейса с Visual Studio 2010

Ff977233.collapse_all(ru-ru,VS.110).gifчасто задаваемые вопросы

Часто задаваемые вопросы тестов Coded UI - 1

Часто задаваемые вопросы -2 тестов Coded UI

Ff977233.collapse_all(ru-ru,VS.110).gifФорум

Проверка модели автоматизации пользовательского интерфейса Visual Studio (включает CodedUI)

См. также

Основные понятия

Проверка кода с помощью закодированных тестов пользовательского интерфейса

Поддерживаемые конфигурации и платформы для закодированных тестов пользовательского интерфейса и записей действий

Другие ресурсы

Приступая к работе с конструктором WPF

Изменение закодированных тестов пользовательского интерфейса с помощью редактора закодированных тестов пользовательского интерфейса