Автоматизация WPF – написание тестов

Автоматизация WPF – написание тестов

В предыдущей статье мы рассмотрели определение WinForms элементов. Проект автоматизации можно скачать по ссылке GitHub.

Ниже представлен листинг класса App.cs, который представляет тестируемое приложение:

Конструктор принимает объект приложений Telerik Testing Framework (WpfApplication) и TestStack White (Application).

Доступ к объектам

Каждое окно в приложении представлено свойством в классе App. Объекты WPF приложения используют метод VisualFind для своей инициализации. Это достигается путем следующего объявления окна с помощью фреймворка Telerik:

Объектам WinForms соответственно нужен White объект  для определения Window.

Этот стандартный метод срабатывает не всегда, поэтому можно использовать следующий вариант:

Использование экземпляра объекта

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

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

Базовый тест

Наконец, чтобы сделать всю работу мы должны создать экземпляр приложения. Экземпляр создается в классе BaseTest.

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

Для того, чтобы запустить приложение, мы должны указать полный путь к файлу EXE. Открытие приложение выполняется с помощью метода White:

Чтобы использовать фреймворки White и Telerik вместе, необходимо использовать объект Manager для объединения двух процессов:

Использование объектов

Как только вызван метод Start (), тестируемое приложение запускается и оба фреймворка подключаются к нему. В тестах уже можно использовать методы для работы с приложением:

Этот код находит и создает новый экземпляр MainWindow и затем он в свою очередь находит и нажимает на кнопку “Browse”. Используемые фреймворки содержат всевозможные действия над элементами, которые затем используются в реальных тестах. После того как все работы по написанию основы тестового фреймворка были сделаны, можно приступать к написанию тестов.

Разрушение объекта приложения

Метод Stop() вызывается в конце каждого теста для того, чтобы закрыть приложение и разрушить процесс приложения.

Написание тестов

Для заруска наших тестов будем использовать MS Unit Testing Framework:

Наш тестовый фреймворк предназначен для запуска тестов в случайном порядке. Перед каждым тестом запускается метод с аннотацией [TestInitialize], – осуществляется запуск приложения. После выполнения каждого тестового метода вызывается [TestCleanup]. В нашем случае закрытие приложения. Мы не создаем юнит (unit) тесты, мы используем функциональное тестирование интерфейса.

В следующей статье речь пойдет о том, как запускать наши тесты.

RelatedPost