Опубликован: 02.08.2013 | Доступ: свободный | Студентов: 465 / 15 | Длительность: 18:38:00
Специальности: Программист
Самостоятельная работа 21:

Тестирование и анализ приложений

В Листинге 57.2 приведен код класса BankAccountTests. Обратите внимание на название класса и на названия методов класса, которые используются для тестирования. Они позволяют быстро понять – что именно тестируется. Обычно для тестирования отдельных классов создают отдельные тестовые классы.

Класс теста объявляется с атрибутом [TestClass], методы – с атрибутом [TestMethod]

using System;
using Microsoft.VisualStudio.TestPlatform.UnitTestFramework;
using P21_1;

namespace BankAccountTest
{
    [TestClass]
    public class BankAccountTests
    {
        [TestMethod]
        public void Debit_WithValidAmount_UpdatesBalance()
        {
            // Подготовка (arrange)
            double beginningBalance = 11.99;
            double debitAmount = 4.55;
            double expected = 7.44;

            BankAccount account = new BankAccount("New Customer", beginningBalance);

            // Выполнение действия (act)
            account.Debit(debitAmount);

            //Проверка результатов (assert)
            double actual = account.Balance;
            Assert.AreEqual(expected, actual, 0.001, "Списание со счета производится неверно");
        }
        [TestMethod]
        public void Credit_WithValidAmount_UpdatesBalance()
        {
            // Подготовка (arrange)
            double beginningBalance = 11.99;
            double creditAmount = 4.55;
            double expected = 16.54;

            BankAccount account = new BankAccount("New Customer", beginningBalance);

            // Выполнение действия (act)
            account.Credit(creditAmount);

            //Проверка результатов (assert)
            double actual = account.Balance;
            Assert.AreEqual(expected, actual, 0.001, "Пополнение счета производится неверно");
        }

    }
}
Листинг 57.2. Код файла UnitTest1.cs

Процесс работы теста традиционно разбивают на три логические части.

Первая часть – подготовка (arrange). Она заключается в подготовке начальных условий. Здесь, для теста Debit_WitnValidationAmount_UpdatesBalance, задаются значения начального баланса (beginningBalance), суммы для списания (debitAmount) и результата (expected), который должен получиться при правильной работе данного метода. Эти начальные сведения нужно тщательно проверить – если они неверны, а метод работает правильно – тест сообщит об ошибке. Здесь же создаётся объект типа BancAccount, который инициализируется начальным балансом и произвольным именем клиента.

Вторая часть – выполнение действий (act) над тестируемым методом тестируемого класса. Мы вызываем метод Debit, передавая ему ранее заготовленную сумму для списания. В объекте account хранится новое значение баланса.

Третья часть – проверка результатов (assert). Здесь используется метод AreEqual (http://msdn.microsoft.com/ru-ru/library/microsoft.visualstudio.testtools.unittesting.assert.areequal.aspx) объекта Microsoft.VisualStudio.TestTools.UnitTesting.Assert (http://msdn.microsoft.com/ru-ru/library/ms245302.aspx. При вызове метода ему передаётся ожидаемое значение (expected), полученное значение (actual), допустимую погрешность измерений и сообщение, которое выдаётся в том случае, если условие не выполняется. Класс Assert имеет множество методов, позволяющих сравнивать объекты различных типов.

Перед запуском теста нужно выбрать в строке запуска отладки эмулятор, после чего воспользоваться командой Запустить все (или другой подходящей) окна Обозреватель тестов. Результат успешного прохождения тестов вы могли видеть на рис. 57.1. Если поменять, например, в методе Debit класса BankAccount команду Balance -= amount на Balance += amount, то есть – создать ситуацию, которая должна приводить к ошибке, тест, относящийся к данному методу, пройден не будет, это будет отмечено соответствующим значком, если щёлкнуть по сообщению об ошибке, как показано на рис. 57.2, можно увидеть описание ошибки, выданное тестом, найти ошибку, исправить и провести повторные тесты.

Тест обнаружил ошибку

увеличить изображение
Рис. 57.2. Тест обнаружил ошибку

Дополнительные сведения о тестировании приложений можно найти в разделе документации "Testing apps for Windows Phone" ("Тестирование приложений для Windows Phone"), http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj247547%28v=vs.105%29.aspx