Документация

Документация по разработке bpm’online
Как создать Unit-тесты с помощью NUnit и Visual Studio

Glossary Item Box

Общие сведения

Unit-тестирование (модульное тестирование) — процесс в программировании, позволяющий проверить работоспособность изолированных частей программы (см. "Модульное тестирование"). Как правило, тесты пишутся разработчиками для каждого нетривиального метода разрабатываемого класса. Это позволяет достаточно быстро обнаружить регрессию исходного кода — появление ошибок в уже протестированных ранее частях программы.

Одним из фреймворков Unit-тестирования .NET-приложений является NUnit — среда Unit-тестирования с открытым исходным кодом. Для ее интеграции с Visual Studio разработан специальный адаптер, который может быть установлен как расширение к Visual Studio или как NuGet пакет проекта, в котором реализованы Unit-тесты. Документация фреймворка версии 3.x доступна по ссылке.

Чтобы создать Unit-тесты для методов или свойств класса, созданного в пользовательском пакете bpm'online:

1. Установите адаптер NUnit для Visual Studio.

2. Перейдите в режим разработки в файловой системе.

3. Настройте проект Unit-тестов.

4. Создайте требуемые тесты.

5. Выполните тестирование.

Описание примера

Добавить тесты для пользовательского класса, реализованного в схеме UsrNUnitSourceCode типа [Исходный код] пользовательского пакета sdkNUnit приложения bpm'online.

Исходный код

Пакет с реализацией пользовательского класса доступен в репозитории sdkNUnit на Github.

Последовательность реализации примера

1. Установить адаптер NUnit для Visual Studio

Адаптер NUnit для Visual Studio может быть установлен одним из способов — как как расширение Visual Studio или как пакет NuGet.

Установка адаптера NUnit как расширения Visual Studio

Преимущества установки адаптера NUnit как расширения для Visual Studio — доступность для любого проекта тестов, поскольку адаптер становится частью IDE. Также преимуществом является автоматическое обновление расширения. Недостаток — необходимость установки для каждого участника команды, работающего над проектом тестов.

Чтобы установить адаптер NUnit:

1. Скачайте расширение из Visual Studio Marketplace *.VSIX-файл.

2. Двойным кликом по *.VSIX-файлу запустите установку. Во время установки выберите необходимые версии Visual Studio.

К СВЕДЕНИЮ

Альтернативным вариантом является установка через меню Tools > Extensions and Updates. Выберите фильтр [Online] (рис. 1, 1) и в строке поиска укажите "NUnit 3 Test Adapter" (2). В результатах поиска выберите расширение NUnit 3 Test Adapter и нажмите кнопку [Download] (3). Установка расширения начнется автоматически.

Рис. 1. — Поиск расширения встроенными средствами Visual Studio

Установка адаптера NUnit как пакета NuGet

Преимуществом установки адаптера NUnit как NuGet-пакета является то, что он становится частью проекта Visual Studio и доступен для всех разработчиков, использующих проект. Недостаток — необходимость установки для всех проектов Unit-тестов.

Для установки адаптера NUnit:

1. Кликните правой кнопкой мышки по проекту тестов (например, Terrasoft.Configuration.Tests.csproj) и выберите команду [Manage NuGet Packages...].

2. В появившейся вкладке менеджера пакетов NuGet (рис. 2) укажите в строке поиска "NUnit3TestAdapter" (1). Выберите пакет в результатах поиска (2) и установите его (3).

Рис. 2. — Установка пакета NUnit3TestAdapter в менеджере пакетов NuGet

К СВЕДЕНИЮ

Установка NuGet-пакетов в проекты Visual Studio подробно описана в статье "Package Manager UI" документации Microsoft.

2. Перейти в режим разработки в файловой системе

Создание Unit-тестов для .NET классов, реализованных в пакетах bpm'online, возможно только в режиме разработки в файловой системе. Особенности разработки конфигурации bpm'online в файловой системе, настройка Visual Studio, а также пример работы с серверным кодом, описаны в статьях "Разработка в файловой системе", "Настройка Visual Studio для разработки в файловой системе" и "Работа с серверным кодом в Visual Studio".

В этом примере используется пользовательский пакет sdkNUnit, содержащий схему UsrNUnitSourceCode типа [Исходный код]. В исходном коде этой схемы на языке С# реализован класс UsrNUnitSourceCode, содержащий методы, для которых необходимо написать тесты.

ВАЖНО

Пакет с реализацией пользовательского класса доступен в репозитории sdkNUnit на Github.

Структура пользовательского пакета sdkNUnit после выгрузки в файловую систему имеет вид, показанный на рис. 3.

Рис. 3. — Структура пакета sdkNUnit

Исходный код класса для тестирования:

namespace Terrasoft.Configuration
{
    public class UsrNUnitSourceCode
    {
        // Строковое свойство.
        public string StringToTest
        {
            get
            {
                return "String to test";
            }
        }
        // Метод, проверяющий равенство двух строк.
        public bool AreStringsEqual(string str1, string str2)
        {
            return str1 == str2;
        }
    }
}

3. Настроить проект Unit-тестов

В этом примере для создания Unit-тестов используется преднастроенный проект Terrasoft.Configuration.Tests.csproj, поставляемый вместе с решением Terrasoft.Configuration.sln (см. "Работа с серверным кодом в Visual Studio").

Чтобы использовать фреймворк NUnit для создания тестов в проекте Terrasoft.Configuration.Tests.csproj, добавьте NuGet-пакет NUnit в зависимости проекта. Для этого:

1. В Solution Explorer кликните правой кнопкой мышки по проекту тестов Terrasoft.Configuration.Tests и выберите команду [Manage NuGet Packages...].

2. В появившейся вкладке менеджера пакетов NuGet (рис. 4) укажите в строке поиска "NUnit" (1), затем выберите пакет в результатах поиска (2) и установите его (3).

Рис. 4. — Установка пакета NUnit в менеджере пакетов NuGet

4. Создать требуемые тесты

К СВЕДЕНИЮ

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

Чтобы создать тесты для класса UsrNUnitSourceCode:

1. В проекте Terrasoft.Configuration.Tests.csproj создайте каталог sdkNUnit.Tests.

2. В каталоге sdkNUnit.Tests создайте новый класс UsrNUnitSourceCodeTests. Исходный код этого класса будет сохранен в файле UsrNUnitSourceCodeTests.cs (рис. 5).

Рис. 5. — Стуктура проекта тестов

3. Добавьте в класс UsrNUnitSourceCodeTests методы, реализующие тесты:

using NUnit.Framework;

namespace Terrasoft.Configuration.Tests.sdkNUnitTests
{
    [TestFixture]
    class UsrNUnitSourceCodeTests
    {
        // Экземпляр тестируемого класса.
        UsrNUnitSourceCode objToTest = new UsrNUnitSourceCode();
        // Строка для тестирования.
        string str = "String to test";

        [Test]
        public void ClassReturnsCorrectStringProperty()
        {
            // Тестирование значения строкового свойства.
            // Значение должно быть не пустым и совпадать с требуемым.
            string res = objToTest.StringToTest;
            Assert.That(res, Is.Not.Null.And.EqualTo(str));
        }

        [Test]
        public void StringsMustBeEqual()
        {
            // Тестирование на равенство значений двух строк.
            bool res = objToTest.AreStringsEqual(str, "String to test");
            Assert.That(res, Is.True);
        }

        [Test]
        public void StringsMustBeNotEqual()
        {
            // Тестирование на неравенство значений двух строк.
            // Этот тест будет провален, т.к. значения равны.
            bool res = objToTest.AreStringsEqual(str, "String to test");
            Assert.That(res, Is.False);
        }
    }
}

Класс UsrNUnitSourceCodeTests декорируется атрибутом [TestFixture], который маркиркирует его как класс, содержащий тесты. Каждый тестирующий определенную функциональность метод этого класса должен декорироваться атрибутом [Test]. Атрибуты фреймворка NUnit описаны в статье "Attributes" документации NUnit.

Непосредственно тестирование выполняется с помощью метода Assert.That(), который принимает тестируемое значение и ограничивающие это значение объекты в качестве аргументов. Подробнее утверждения, метод Assert.That() и модель ограничений описаны в статьях "Assertions" и "Constraint Model" документации NUnit.

5. Выполнить тестирование

Для выполнения тестирования откройте в Visual Studio окно [Test Explorer] командой меню [Test] > [Windows] > [Test Explorer] (рис. 6).

Рис. 6. — Окно [Test Explorer]

Для запуска тестов выполните команду [Run All]. Успешно пройденные тесты будут перемещены в группу [Passed Test], а проваленные тесты — в группу [Failed Test] (рис. 7).

Рис. 7. — Отображение успешных и проваленных тестов

О функциональности окна [Test Explorer] читайте в статье "Run unit tests with Test Explorer" документации Visual Studio.

© Terrasoft 2002-2018.

Был ли данный материал полезен?

Как можно улучшить эту статью?