В этом уроке мы будем автоматизировать десктопное приложение (встроенного калькулятора Windows) с помощью фреймворка Teststack White. С помощью White можно автоматизировать приложения, использующие платформы:Win32, WinForms, WPF, Silverlight и SWT (Java).
1. Настройка окружения
1.1 Скачайте бесплатную Visual Studio Express с официального сайта Microsoft: http://www.visualstudio.com/downloads/download-visual-studio-vs
1.2 Установите Visual studio (я использую Ultimate 2013).
1.3 Установите дополнительные плагины: Tools -> Extensions and Updates.
1.4 Введите “nuget” в окне поиска и установите пакетный менеджер (у меня уже установлен). После этого перезагрузите Visual Studio.
1.5 Установите Nunit для запуска тестов в Visual Studio.
1.6 Создайте новый тестовый C# Unit проект в VS. File->New Project->Unit Test Project.
2. Определяем объекты десктопного приложения с помощью spy-приложения
2.1 Запустите калькулятор Windows.
2.2 Скачайте приложение spy, с помощью которого можно промапить элементы (объеты) приложения – кнопки калькулятора, поля результата вычислений. Скачайте по ссылке UIAVerify.
В самом тесте выполняется поиск элементов по Name и AutomationID, например:
1 |
var button = GetWindow().Get<Button>(SearchCriteria.ByText(nameWindow)); |
3 Написание простого теста для калькулятора
Создайте класс Calculations для наших unit-тестов и внесите в него следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
using System; using Microsoft.VisualStudio.TestTools.UnitTesting; using TestStack.White; using TestStack.White.UIItems; using System.Threading; using TestStack.White.UIItems.WindowItems; using TestStack.White.UIItems.Finders; using System.Windows.Automation; namespace AutomationQAHelp { [TestClass] public class Calculations { private Application _application; [TestMethod] public void PlusTwoNumbers() { // открытие калькулятора _application = Application.Launch("C:\\Windows\\system32\\calc.exe"); Assert.IsNotNull(_application); GetButton("2").Click(); GetButton("Add").Click(); GetButton("3").Click(); GetButton("Equals").Click(); Assert.AreEqual(ResultTextBox(), "5"); _application.Close(); } [TestMethod] public void MinusTwoNumbers() { _application = Application.Launch("C:\\Windows\\system32\\calc.exe"); Assert.IsNotNull(_application); GetButton("Clear").Click(); GetButton("4").Click(); GetButton("Subtract").Click(); GetButton("2").Click(); GetButton("Equals").Click(); Assert.AreEqual(ResultTextBox(), "2"); _application.Close(); } [TestMethod] public void MultiplyTwoNumbers() { _application = Application.Launch("C:\\Windows\\system32\\calc.exe"); Assert.IsNotNull(_application); GetButton("Clear").Click(); GetButton("3").Click(); GetButton("Multiply").Click(); GetButton("5").Click(); GetButton("Equals").Click(); Assert.AreEqual(ResultTextBox(), "15"); _application.Close(); } [TestMethod] public void DevideTwoNumbers() { _application = Application.Launch("C:\\Windows\\system32\\calc.exe"); Assert.IsNotNull(_application); GetButton("Clear").Click(); GetButton("8").Click(); GetButton("Divide").Click(); GetButton("2").Click(); GetButton("Equals").Click(); Assert.AreEqual(ResultTextBox(), "4"); _application.Close(); } // возврат результата операций private object ResultTextBox() { return GetWindow().Get<Label>(SearchCriteria.ByAutomationId("150")).AutomationElement. GetCurrentPropertyValue(AutomationElement.NameProperty).ToString(); } // метод поиска кнопки public Button GetButton(string nameWindow) { for (var i = 0; i < 100; i++) { Thread.Sleep(100); var button = GetWindow().Get<Button>(SearchCriteria.ByText(nameWindow)); if (button != null) return button; } return null; } // метод возврата главного окна калькулятора public Window GetWindow() { return _application.GetWindow("Calculator"); } } } |
Также вам будет необходимо импортировать библиотеки:
1) Nunit
2) White
3) UIAutomation
Как добавлять библиотеки описывалось в предыдущей статье.
После этого проект будет выглядеть следующим образом:
Запустите тесты:
И получите результат:
Также вы можете скачать проект и открыть в Visual Studio.