Эта статья переведена вручную. Наведите указатель мыши на предложения статьи, чтобы просмотреть исходный текст. Дополнительные сведения.
|
Перевод
Текст оригинала
|
Создание управляемого данными закодированного теста пользовательского интерфейса
Требования
-
Visual Studio Ultimate, Visual Studio Premium
Шаг 1. Создание закодированного теста пользовательского интерфейса
-
Создайте проект. -
Выберите запись действий. -
Откройте приложение "Калькулятор" и начните запись теста. -
Сложите 1 и 2, приостановите средство записи и создайте метод теста. Позже эти значения ввода пользователя будут заменены значениями из файла данных. Закройте построитель теста. Метод добавляется в тест. [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. this.UIMap.AddNumbers(); }
-
С помощью метода AddNumbers() проверьте, выполняется ли тест. Поместите курсор в метод теста, показанный выше, откройте контекстное меню и выберите Запуск тестов. (Сочетание клавиш: Ctrl + R, T). В окне обозревателя тестов отображается результат теста, показывающий, пройден тест или нет. Чтобы открыть окно обозревателя тестов, в меню ТЕСТ выберите Окна, а затем выберите Обозреватель тестов. -
Так как источник данных также может использоваться для значений параметров утверждения, с помощью которых тест проверяет ожидаемые значения, добавим утверждение для проверки правильности суммы двух чисел. Поместите курсор в методе теста, показанном выше, откройте контекстное меню, выберите Создать код для кодированного теста пользовательского интерфейса, а затем выберите Использовать построитель кодированных тестов ИП. Сопоставьте элемент управления "Текст" с калькулятором, который отображает сумму. -
Добавьте утверждение, которое проверяет правильность значения суммы. Выберите свойство DisplayText, которое имеет значение 3, а затем выберите Добавить утверждение. С помощью средства сравнения AreEqual проверьте, имеет ли сравнение значение 3. -
После настройки утверждения снова создайте код из построителя. При этом создается новый метод для проверки. Так как метод ValidateSum проверяет результаты метода AddNumbers, переместите его в нижнюю часть блока кода. 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. this.UIMap.AddNumbers(); this.UIMap.ValidateSum(); }
-
Убедитесь, что тест выполняется, с помощью метода ValidateSum(). Поместите курсор в метод теста, показанный выше, откройте контекстное меню и выберите Запуск тестов. (Сочетание клавиш: Ctrl + R, T). На этом этапе все значения параметров заданы в соответствующих методах как константы. Теперь давайте создадим набор данных, чтобы сделать наш тест управляемым данными.
Шаг 2. Создание набора данных
-
Добавьте текстовый файл в проект dataDrivenSample с именем data.csv. -
Заполните CSV-файл следующими данными. Num1 Num2 Sum 3 4 7 5 6 11 6 8 14 После добавления данных этот файл должен выглядеть следующим образом. -
Важно сохранить этот CSV-файл в правильной кодировке. В меню ФАЙЛ выберите Дополнительные параметры сохранения и выберите в качестве кодировки Юникод (UTF-8 без сигнатуры) — кодовая страница 65001. -
Этот CSV-файл необходимо скопировать в выходной каталог, иначе не удается запустить тест. Скопируйте его с помощью окна «Свойства». Теперь, когда у нас есть созданный набор данных, следует привязать данные к тесту.
Шаг 3. Добавление привязки источника данных
-
Чтобы привязать источник данных, добавьте атрибут DataSource в существующий атрибут [TestMethod], который находится сразу над методом теста. [DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\data.csv", "data#csv", DataAccessMethod.Sequential), DeploymentItem("data.csv"), 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. this.UIMap.AddNumbers(); this.UIMap.ValidateSum(); }
Источник данных теперь доступен для использования в этом тестовом методе. Совет
Примеры использования других типов источников данных, таких как XML, SQL Express и Excel, см. в разделе Примеры атрибутов источников данных. -
Запустите тест. Обратите внимание, что тест выполняется в три итерации. Это происходит потому, что привязанный источник данных содержит три строки данных. Однако можно также заметить, что тест по-прежнему использует константные значения параметров и каждый раз складывает 1 и 2, получая сумму 3. Далее мы будем настраивать тест для использования значений из файла источника данных.
Шаг 4. Использование данных в закодированном тесте пользовательского интерфейса
-
Добавьте using Microsoft.VisualStudio.TestTools.UITesting.WinControls в верхнюю часть файла CodedUITest.cs: using System; using System.Collections.Generic; using System.Text.RegularExpressions; using System.Windows.Input; using System.Windows.Forms; using System.Drawing; using Microsoft.VisualStudio.TestTools.UITesting; using Microsoft.VisualStudio.TestTools.UnitTesting; using Microsoft.VisualStudio.TestTools.UITest.Extension; using Keyboard = Microsoft.VisualStudio.TestTools.UITesting.Keyboard; using Microsoft.VisualStudio.TestTools.UITesting.WinCo757529f7ccf1163afbe8" data-source="Next, the assertion and the parameter values for the two numbers are coded to become data-driven and stored in a comma-separated value (.csv) file." xml:space="preserve">
Далее утверждение и значения параметров для двух чисел кодируются в управляемые данными и сохраняются в файле с разделителями-запятыми (CSV). Шаг 1. Создание закодированного теста пользовательского интерфейса
-
Создайте проект. -
Выберите запись действий. -
Откройте приложение "Калькулятор" и начните запись теста. -
Сложите 1 и 2, приостановите средство записи и создайте метод теста. Позже эти значения ввода пользователя будут заменены значениями из файла данных. Закройте построитель теста. Метод добавляется в тест. [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. this.UIMap.AddNumbers(); }
-
С помощью метода AddNumbers() проверьте, выполняется ли тест. Поместите курсор в метод теста, показанный выше, откройте контекстное меню и выберите Запуск тестов. (Сочетание клавиш: Ctrl + R, T). В окне обозревателя тестов отображается результат теста, показывающий, пройден тест или нет. Чтобы открыть окно обозревателя тестов, в меню ТЕСТ выберите Окна, а затем выберите Обозреватель тестов. -
Так как источник данных также может использоваться для значений параметров утверждения, с помощью которых тест проверяет ожидаемые значения, добавим утверждение для проверки правильности суммы двух чисел. Поместите курсор в методе теста, показанном выше, откройте контекстное меню, выберите Создать код для кодированного теста пользовательского интерфейса, а затем выберите Использовать построитель кодированных тестов ИП. Сопоставьте элемент управления "Текст" с калькулятором, который отображает сумму. -
Добавьте утверждение, которое проверяет правильность значения суммы. Выберите свойство DisplayText, которое имеет значение 3, а затем выберите Добавить утверждение. С помощью средства сравнения AreEqual проверьте, имеет ли сравнение значение 3. -
После настройки утверждения снова создайте код из построителя. При этом создается новый метод для проверки. Так как метод ValidateSum проверяет результаты метода AddNumbers, переместите его в нижнюю часть блока кода. 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. this.UIMap.AddNumbers(); this.UIMap.ValidateSum(); }
-
Убедитесь, что тест выполняется, с помощью метода ValidateSum(). Поместите курсор в метод теста, показанный выше, откройте контекстное меню и выберите Запуск тестов. (Сочетание клавиш: Ctrl + R, T). На этом этапе все значения параметров заданы в соответствующих методах как константы. Теперь давайте создадим набор данных, чтобы сделать наш тест управляемым данными.
Шаг 2. Создание набора данных
-
Добавьте текстовый файл в проект dataDrivenSample с именем data.csv. -
Заполните CSV-файл следующими данными. Num1 Num2 Sum 3 4 7 5 6 11 6 8 14 После добавления данных этот файл должен выглядеть следующим образом. -
Важно сохранить этот CSV-файл в правильной кодировке. В меню ФАЙЛ выберите Дополнительные параметры сохранения и выберите в качестве кодировки Юникод (UTF-8 без сигнатуры) — кодовая страница 65001. -
Этот CSV-файл необходимо скопировать в выходной каталог, иначе не удается запустить тест. Скопируйте его с помощью окна «Свойства». Теперь, когда у нас есть созданный набор данных, следует привязать данные к тесту.
Шаг 3. Добавление привязки источника данных
-
Чтобы привязать источник данных, добавьте атрибут DataSource в существующий атрибут [TestMethod], который находится сразу над методом теста. [DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\data.csv", "data#csv", DataAccessMethod.Sequential), DeploymentItem("data.csv"), 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. this.UIMap.AddNumbers(); this.UIMap.ValidateSum(); }
Источник данных теперь доступен для использования в этом тестовом методе. Совет
Примеры использования других типов источников данных, таких как XML, SQL Express и Excel, см. в разделе Примеры атрибутов источников данных. -
Запустите тест. Обратите внимание, что тест выполняется в три итерации. Это происходит потому, что привязанный источник данных содержит три строки данных. Однако можно также заметить, что тест по-прежнему использует константные значения параметров и каждый раз складывает 1 и 2, получая сумму 3. Далее мы будем настраивать тест для использования значений из файла источника данных.
Шаг 4. Использование данных в закодированном тесте пользовательского интерфейса
-
Добавьте using Microsoft.VisualStudio.TestTools.UITesting.WinControls в верхнюю часть файла CodedUITest.cs: using System; using System.Collections.Generic; using System.Text.RegularExpressions; using System.Windows.Input; using System.Windows.Forms; using System.Drawing; using Microsoft.VisualStudio.TestTools.UITesting; using Microsoft.VisualStudio.TestTools.UnitTesting; using Microsoft.VisualStudio.TestTools.UITest.Extension; using Keyboard = Microsoft.VisualStudio.TestTools.UITesting.Keyboard; using Microsoft.VisualStudio.TestTools.UITesting.WinControls;
-
Добавьте TestContext.DataRow[] в метод CodedUITestMethod1(), который будет применять значения из источника данных. Значения из источника данных переопределяют константы, назначенные элементам управления UIMap, с помощью элементов управления SearchProperties: 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. this.UIMap.UICalculatorWindow.UIItemWindow.UIItem1Button.SearchProperties[WinButton.PropertyNames.Name] = TestContext.DataRow["Num1"].ToString(); this.UIMap.UICalculatorWindow.UIItemWindow21.UIItem2Button.SearchProperties[WinButton.PropertyNames.Name] = TestContext.DataRow["Num2"].ToString(); this.UIMap.AddNumbers(); this.UIMap.ValidateSumExpectedValues.UIItem2TextDisplayText = TestContext.DataRow["Sum"].ToString(); this.UIMap.ValidateSum(); }
Чтобы понять, в какие свойства поиска следует кодировать данные, используйте редактор закодированных тестов пользовательского интерфейса. Откройте файл UIMap.uitest. Выберите действие пользовательского интерфейса и просмотрите соответствующее сопоставление элементов управления пользовательского интерфейса. Обратите внимание, как сопоставление соответствует коду, например, this.UIMap.UICalculatorWindow.UIItemWindow.UIItem1Button. В окне свойств откройте свойства поиска. Значение Имя свойств поиска — это то, что обрабатывается в коде с помощью источника данных. Например, SearchProperties назначаются значения в первом столбце каждой строки данных: UIItem1Button.SearchProperties[WinButton.PropertyNames.Name] = TestContext.DataRow["Num1"].ToString();. В рамках трех итераций этот тест изменит значение Имя для свойства поиска на 3, затем на 5 и наконец на 6.
-
Сохраните решение.
Шаг 5. Запуск управляемого данными теста
-
Убедитесь, что тест теперь управляется данными, запустив его еще раз. Вы должны увидеть, как тест проходит по трем итерациям, используя значения из CSV-файла. Проверка также должна работать, и тест в обозревателе тестов должен отображаться как пройденный.
Руководство
Дополнительные сведения см. в следующих документах: "Шаблоны и приемы. Тестирование при непрерывной поставке с использованием Visual Studio 2012", глава 3, "Лабораторные среды" и "Шаблоны и приемы. Тестирование при непрерывной поставке с использованием Visual Studio 2012", глава 5, "Средства тестирования". Что такое атрибуты источника данных для других типов источников данных, таких как SQL Express или XML?
Можно использовать строки примеров источников данных из таблицы ниже, скопировав их в код, и внести необходимые настройки. Тип источника данных Атрибут источника данных CSV [DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\data.csv", "data#csv", DataAccessMethod.Sequential), DeploymentItem("data.csv"), TestMethod]
Excel DataSource("System.Data.Odbc", "Dsn=Excel Files;Driver={Microsoft Excel Driver (*.xls)};dbq=|DataDirectory|\\Data.xls;defaultdir=.;driverid=790;maxbuffersize=2048;pagetimeout=5;readonly=true", "Sheet1$", DataAccessMethod.Sequential), TestMethod]
Тестовый случай в Team Foundation Server [DataSource("Microsoft.VisualStudio.TestTools.DataSource.TestCase", "http://vlm13261329:8080/tfs/DefaultCollection;Agile", "30", DataAccessMethod.Sequential), TestMethod]
XML [DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\data.xml", "Iterations", DataAccessMethod.Sequential), DeploymentItem("data.xml"), TestMethod]
SQL Server, экспресс-выпуск [DataSource("System.Data.SqlClient", "Data Source=.\\sqlexpress;Initial Catalog=tempdb;Integrated Security=True", "Data", DataAccessMethod.Sequential), TestMethod]
Вопрос. Можно ли использовать управляемые данными тесты в моем приложении Windows Phone?
Ответ. Да. Закодированные тесты ИП на основе данных для Windows Phone определяются с помощью атрибута DataRow тестового метода. В следующем примере для x и y заданы значения 1 и 2 в первой итерации и значения -1 и -2 во второй итерации теста. [DataRow(1, 2, DisplayName = "Add positive numbers")] [DataRow(-1, -2, DisplayName = "Add negative numbers")] [TestMethod] public void DataDrivingDemo_MyTestMethod(int x, int y)
Дополнительные сведения см. в разделе Использование управляемых данными закодированных тестов пользовательского интерфейса в приложениях Windows Phone. В. Почему не следует изменять файл UIMap.Designer?
Ответ. Любые изменения кода, внесенные в файл UIMapDesigner.cs, будут переопределяться каждый раз при создании кода с помощью построителя кодированных тестов ИП. В этом примере и в большинстве случаев изменения кода, необходимые, чтобы тест использовал источник данных, можно делать в файле исходного кода теста (т. е. CodedUITest1.cs). Если требуется изменить записанный метод, необходимо скопировать его в файл UIMap.cs и переименовать. Файл UIMap.cs можно использовать для переопределения методов и свойств в файле UIMapDesigner.cs. Необходимо удалить ссылку на исходный метод в файле CodedUITest.cs и заменить ее именем переименованного метода. -
Добавления сообщества
ДОБАВИТЬ
Что такое атрибуты источника данных для других типов источников данных, таких как SQL Express или XML?
|
|
---|---|
|
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "|DataDirectory|\\data.csv", "data#csv", DataAccessMethod.Sequential), DeploymentItem("data.csv"), TestMethod] |
|
DataSource("System.Data.Odbc", "Dsn=Excel Files;Driver={Microsoft Excel Driver (*.xls)};dbq=|DataDirectory|\\Data.xls;defaultdir=.;driverid=790;maxbuffersize=2048;pagetimeout=5;readonly=true", "Sheet1$", DataAccessMethod.Sequential), TestMethod] |
|
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.TestCase", "http://vlm13261329:8080/tfs/DefaultCollection;Agile", "30", DataAccessMethod.Sequential), TestMethod] |
|
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\data.xml", "Iterations", DataAccessMethod.Sequential), DeploymentItem("data.xml"), TestMethod] |
|
[DataSource("System.Data.SqlClient", "Data Source=.\\sqlexpress;Initial Catalog=tempdb;Integrated Security=True", "Data", DataAccessMethod.Sequential), TestMethod] |
Вопрос. Можно ли использовать управляемые данными тесты в моем приложении Windows Phone?
[DataRow(1, 2, DisplayName = "Add positive numbers")] [DataRow(-1, -2, DisplayName = "Add negative numbers")] [TestMethod] public void DataDrivingDemo_MyTestMethod(int x, int y)
В. Почему не следует изменять файл UIMap.Designer?