Всем привет. В предыдущей статье мы рассмотрели использование довольно молодой технологии TestStack White для создания основы фреймворка для автоматизации декстопного приложения, а в частности, калькулятора Windows. Сегодня мы попробуем пойти далее и приступить к непосредственной задачи – написанию автотестов.
Бизнес-логика основы фреймворка и автотестов срого разделена. Для упрощения все тесты внесем в один класс:
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 |
using Calculator.Automation.Framework; using Calculator.Automation.Framework.Mappings; using Microsoft.VisualStudio.TestTools.UnitTesting; using System; namespace Calculator.Automation.Tests { [TestClass] public class BaseFunctionalTests { private int _firstDigit; private int _secondDigit; private MainWindow _mainWindow; [TestInitialize] public void TestInitialize() { CalcFactory.Instance.Launch(); _mainWindow = CalcFactory.Instance.GetWindow<MainWindow>(); _mainWindow.MenuBar.MenuItem("View", "Scientific").Click(); var rand = new Random(); _firstDigit = rand.Next(1, 1000); _secondDigit = rand.Next(1, 1000); } [TestCleanup] public void TestCleanup() { CalcFactory.Instance.Dispose(); } [TestMethod] public void PlusCountsCorrect() { _mainWindow.SetDigitByButtonClick(_firstDigit); _mainWindow.Add.Click(); _mainWindow.SetDigitByButtonClick(_secondDigit); _mainWindow.EqualsButton.Click(); Assert.AreEqual(_firstDigit + _secondDigit, _mainWindow.Result); } [TestMethod] public void MinusCountsCorrect() { _mainWindow.SetDigitByButtonClick(_firstDigit); _mainWindow.Subtract.Click(); _mainWindow.SetDigitByButtonClick(_secondDigit); _mainWindow.EqualsButton.Click(); Assert.AreEqual(_firstDigit - _secondDigit, _mainWindow.Result); } [TestMethod] public void AngleSineCountsCorrect() { _mainWindow.SetDigitByButtonClick(_firstDigit); _mainWindow.Sine.Click(); Assert.AreEqual(Math.Sin(_firstDigit * Math.PI / 180), _mainWindow.Result, 0.001d); } [TestMethod] public void AngleCosineCountsCorrect() { _mainWindow.SetDigitByButtonClick(_firstDigit); _mainWindow.Cosine.Click(); Assert.AreEqual(Math.Cos(_firstDigit * Math.PI / 180), _mainWindow.Result, 0.001d); } [TestMethod] public void SquareRootCountsCorrect() { _mainWindow.SetDigitByButtonClick(_firstDigit); _mainWindow.YRoot.Click(); _mainWindow.SetDigitByButtonClick(2); _mainWindow.EqualsButton.Click(); Assert.AreEqual(Math.Sqrt(_firstDigit), _mainWindow.Result); } } } |
Для запуска приложения в методе TestInitialize() используется конструкция CalcFactory.Instance.Launch() на основе паттера Singlton. Можно заметить, что доступ ко всем методам осуществляется с использованием объекта класса MainWindow.
Для определения методов-тестов используется рассмотренный ранее NUnit.
Запустив наши 5 автотестов в Visual Studio и открыв Test Explorer можно заметить, что все тесты прошли успешно.