Поделиться через


Использование платформы модульного тестирования Майкрософт для C++ в Visual Studio

Платформа модульного тестирования Майкрософт для C++ включена по умолчанию в рабочую нагрузку Разработка классических приложений на C++.

Написание модульных тестов в отдельном проекте

Как правило, тестовый код запускается в отдельном проекте в том же решении, что и тестируемый код. Инструкции по созданию и настройке тестового проекта см. в статье Создание модульных тестов для C/C++.

Написание модульных тестов в одном проекте

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

  1. Измените свойства проекта так, чтобы он включал заголовки и файлы библиотек, которые необходимы для модульного тестирования.

    1. В обозревателе решений в контекстном меню тестируемого проекта выберите пункт Свойства. Откроется окно свойств проекта.

    2. В диалоговом окне "Страницы свойств" выберите Свойства конфигурации>Каталоги VC++.

    3. Щелкните стрелку вниз в следующих строках и выберите <Правка>. Добавьте следующие пути:

      Directory Свойство
      Каталоги включаемых файлов $(VCInstallDir)Auxiliary\VS\UnitTest\include
      Каталоги библиотек $(VCInstallDir)Auxiliary\VS\UnitTest\lib
  2. Добавьте файл модульного тестирования С++:

    1. Щелкните правой кнопкой мыши узел проекта в обозревателе решений и последовательно выберите Добавить>Новый элемент.

    2. В диалоговом окне Добавление нового элемента выберите Файл C++ (.cpp), присвойте ему имя и нажмите Добавить.

Связывание тестов с файлами объектов или библиотеки

Если тестируемый код не экспортирует функции, которые необходимо проверить, можно добавить файл OBJ или LIB в зависимости тестового проекта. Измените свойства тестового проекта так, чтобы он включал заголовки и файлы библиотек или объектов, которые необходимы для модульного тестирования.

  1. В обозревателе решений в контекстном меню тестового проекта выберите пункт Свойства. Откроется окно свойств проекта.

  2. Перейдите на страницу Свойства конфигурации>Компоновщик>Входные данные и выберите пункт Дополнительные зависимости.

    Выберите Изменить и добавьте имена файлов .obj или .lib. Не используйте полные пути.

  3. Перейдите на страницу Свойства конфигурации>Компоновщик>Общие и выберите пункт Дополнительные каталоги библиотек.

    Выберите Изменить и добавьте путь к каталогу файлов .obj или .lib. Путь обычно находится внутри папки построения тестируемого проекта.

  4. Перейдите на страницу Свойства конфигурации>Каталоги VC++ и выберите пункт Включаемые каталоги.

    Выберите Изменить, а затем добавьте каталог заголовков тестируемого проекта.

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

В каждом CPP-файле с тестовыми классами должен быть заголовок CppUnitTest.h и оператор using для using namespace Microsoft::VisualStudio::CppUnitTestFramework. Тестовый проект уже настроен. Кроме того, он включает определение пространства имен и класс TEST_CLASS с методом TEST_METHOD, чтобы вы могли сразу приступить к работе. Вы можете изменить имя пространства имен и имена в скобках в макросах класса и метода.

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

Для определения условий теста используйте статические методы в классе Assert. Используйте класс Logger для вывода сообщений в окне вывода. Добавление атрибутов в методы теста

Запуск тестов

  1. В меню Тест выберите пункт Windows>, а затем пункт Обозреватель тестов.

  2. Если в окне видны не все тесты, выполните сборку тестового проекта, щелкнув его узел в обозревателе решений правой кнопкой мыши и выбрав пункт Сборка или Перестроить.

  3. В обозревателе тестов нажмите Запустить все или выберите тесты, которые следует запустить. Щелкните тест правой кнопкой мыши, чтобы получить доступ к другим командам, включая запуск в режиме отладки с включенными точками останова.

  4. В окне вывода выберите в раскрывающемся списке пункт Тесты, чтобы просмотреть сообщения, полученные от класса Logger:

    C++ Output Window showing test messages

Определение признаков для группирования

Для методов теста можно определять признаки, с помощью которых можно классифицировать и группировать тесты в обозревателе тестов. Чтобы определить признак, используйте макрос TEST_METHOD_ATTRIBUTE . Например, чтобы определить признак с именем TEST_MY_TRAIT, выполните следующее.

#define TEST_MY_TRAIT(traitValue) TEST_METHOD_ATTRIBUTE(L"MyTrait", traitValue)

Для использования определенных признаков в модульных тестах введите все указанное ниже.

BEGIN_TEST_METHOD_ATTRIBUTE(Method1)
    TEST_OWNER(L"OwnerName")
    TEST_PRIORITY(1)
    TEST_MY_TRAIT(L"thisTraitValue")
END_TEST_METHOD_ATTRIBUTE()

TEST_METHOD(Method1)
{
    Logger::WriteMessage("In Method1");
    Assert::AreEqual(0, 0);
}

Макросы атрибута признака C++

В CppUnitTest.h имеются указанные ниже предварительно определенные признаки. Дополнительные сведения см. в разделе Справочные материалы по API платформы модульного тестирования Майкрософт для C++.

Макрос Description
TEST_METHOD_ATTRIBUTE(attributeName, attributeValue) Используйте макрос TEST_METHOD_ATTRIBUTE, чтобы определить признак.
TEST_OWNER(ownerAlias) Стандартный признак "Владелец" позволяет указать владельца метода теста.
TEST_PRIORITY(priority) Стандартный признак "Приоритет" служит для назначения относительного приоритета методам теста.