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


Начало работы с модульным тестированием

Используйте Visual Studio для определения и запуска модульных тестов для поддержания качества кода, гарантирования покрытия кода и поиска ошибок и сбоев до того, как это сделают ваши клиенты. Запустите модульные тесты часто, чтобы убедиться, что код работает правильно.

В этой статье код использует C# и C++, иллюстрации находятся в C#, но основные понятия и функции применяются к .NET языкам, C++, Python, JavaScript и TypeScript.

Создание модульных тестов

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

  1. Откройте проект, который требуется протестировать в Visual Studio.

    В целях демонстрации примера модульного теста в этой статье проводится тестирование простого консольного проекта C# или C++, названного HelloWorld. Пример кода для такого проекта выглядит следующим образом:

    namespace HelloWorld
    {
       public class Program
       {
          public static void Main()
          {
             Console.WriteLine("Hello World!");
          }
       }
    }
    
  2. В Обозреватель решений выберите узел решения. Затем в верхней строке меню выберите ФайлДобавитьНовый проект.

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

    Введите тест в поле поиска, чтобы найти шаблон проекта модульного теста для тестовой платформы, которую вы хотите использовать, например MSTest (C#) или проект машинного модульного теста (C++), и выберите его.

    Языки .NET в Visual Studio включают встроенные шаблоны для NUnit и xUnit. В этом примере выберите проект Нативного модульного теста, который использует Microsoft Native Unit Test Framework. (Чтобы использовать другую платформу тестирования C++, ознакомьтесь с разделом "Написание модульных тестов для C/C++". Сведения о Python см. в разделе Настройка модульного тестирования в коде Python для настройки тестового проекта.

    Подсказка

    В этой статье описывается, как вручную создавать модульные тесты. Если вы хотите автоматически создавать тесты из существующего кода, см. раздел Создание и запуск модульных тестов с помощью тестирования #REF! Copilot для .NET, или для других языков, см. в разделе Использовать слеш-команды в #REF! Copilot

    Подсказка

    В этой статье описывается, как вручную создавать модульные тесты. Если вы хотите автоматически создавать тесты из существующего кода, см. методы стабов модульных тестов C# из кода, или для других языков, см. Использовать команды косой черты в #REF! Copilot

    На следующем рисунке показан модульный тест MSTest, который поддерживается в .NET.

    Шаблон проекта юнит-тестирования в Visual Studio 2022

    Нажмите кнопку "Далее", выберите имя тестового проекта и нажмите кнопку "Создать".

    Проект добавлен в решение.

    Скриншот, показывающий проект юнит-теста в Обозреватель решений.

    Проект модульных тестов в Обозревателе решений

  4. В проекте модульного теста добавьте ссылку на проект, который вы хотите протестировать, щелкнув правой кнопкой мыши ссылки или зависимости , а затем выберите "Добавить ссылку " или "Добавить ссылку на проект".

  5. Выберите проект, содержащий код, который вы протестируете, и нажмите кнопку "ОК".

    Добавить ссылку на проект в Visual Studio

  6. Добавьте код в метод модульного теста.

    Например, можно использовать следующий код, выбрав правильную вкладку документации, соответствующую платформе тестирования: MSTest, NUnit или xUnit (поддерживается только в .NET) или Microsoft Native Unit Test Framework.

    • MSTest
    • NUnit
    • xUnit
    • Microsoft Native Unit Test Framework
    using Microsoft.VisualStudio.TestTools.UnitTesting;
    using System.IO;
    using System;
    
    namespace HelloWorldTests
    {
       [TestClass]
       public class UnitTest1
       {
          private const string Expected = "Hello World!";
          [TestMethod]
          public void TestMethod1()
          {
             using (var sw = new StringWriter())
             {
                Console.SetOut(sw);
                HelloWorld.Program.Main();
    
                var result = sw.ToString().Trim();
                Assert.AreEqual(Expected, result);
             }
          }
       }
    }
    

Выполнение модульных тестов

  1. Откройте обозреватель тестов.

    Чтобы открытьобозреватель тестов, выберите "Обозреватель тестов" в верхней строке меню (или нажмите клавиши CTRLE, T).

  2. Запустите модульные тесты, нажав кнопку "Выполнить все " (или нажмите клавиши CTRLR, V).

    Снимок экрана, показывающий обозреватель тестов.

    Выполнение модульных тестов в обозревателе тестов

    После завершения тестов зеленый флажок указывает, что пройден тест. Красный значок "x" указывает, что тест завершился ошибкой.

    Снимок экрана: результаты модульного теста в обозревателе тестов.

    Проверка результатов модульного теста в обозревателе тестов

Подсказка

Обозреватель тестов можно использовать для выполнения модульных тестов из встроенной платформы тестирования (MSTest) или сторонних платформ тестирования. Вы можете группировать тесты в категории, фильтровать список тестов и создавать, сохранять и запускать списки воспроизведения тестов. Вы также можете отлаживать тесты и анализировать производительность тестов и покрытие кода.

Просмотр результатов динамического модульного теста (Visual Studio Enterprise)

Если вы используете платформу тестирования MSTest, xUnit или NUnit в Visual Studio 2017 или более поздней версии, вы можете просмотреть динамические результаты модульных тестов.

Замечание

Для выполнения этих действий требуется Visual Studio Enterprise, а также код .NET и одну из следующих платформ тестирования: MSTest, xUnit или NUnit.

  1. Включите динамическое модульное тестирование в меню "Тест", выбрав "Запуск тестовогодинамического модульного тестирования".

    Запустите живое модульное тестирование в Visual Studio 2022

  2. Просмотрите результаты тестов в окне редактора кода при написании и изменении кода.

    Снимок экрана: результаты тестов.

    Просмотр результатов тестов

  3. Щелкните индикатор результата теста, чтобы просмотреть дополнительные сведения, например имена тестов, охватывающих этот метод.

    Снимок экрана: индикаторы результатов теста.

    Выбор индикаторов результатов теста

Дополнительные сведения о динамическом модулье тестирования см. в разделе Live Unit Testing.

Использование сторонней платформы тестирования

Модульные тесты можно запускать в Visual Studio с помощью сторонних платформ тестирования, таких как NUnit, Boost или Google C++ Testing Framework, в зависимости от языка программирования. Чтобы использовать стороннюю платформу, выполните приведенные действия.

  • Используйте NuGet диспетчер пакетов для установки пакета NuGet для выбранной платформы.

  • (.NET) Начиная с Visual Studio 2017 версии 14.6 Visual Studio включает предварительно настроенные шаблоны тестовых проектов для платформ тестирования NUnit и xUnit. Шаблоны также включают необходимые пакеты NuGet для поддержки.

  • (C++) В Visual Studio 2017 и более поздних версиях некоторые платформы, такие как Google C++ Testing Framework, уже включены. Подробнее см. в Написание модульных тестов для C/C++ в Visual Studio.

Чтобы добавить проект модульного теста, выполните приведенные действия.

  1. Откройте решение, содержащее код, который требуется протестировать.

  2. Щелкните решение правой кнопкой мыши в Обозреватель решений и выберите Add>New Project.

  3. Выберите шаблон проекта модульного теста.

    В этом примере выберите NUnit

    шаблон тестового проекта NUnit в Visual Studio 2022

    Шаблон проекта содержит ссылки на NuGet на NUnit и NUnit3TestAdapter.

    Снимок экрана, показывающий зависимости NUnit NuGet в Обозреватель решений.

    Зависимости NUnit NuGet в Обозреватель решений

  4. Добавьте ссылку из тестового проекта в проект, содержащий код, который требуется протестировать.

    Щелкните проект правой кнопкой мыши в Обозреватель решений и выберите Add>Reference. (Вы также можете добавить ссылку из меню правой кнопкой мыши узла Ссылок или зависимостей .)

  5. Добавьте код в метод тестирования.

    Снимок экрана: код в файле модульного теста.

    Добавление кода в файл кода модульного теста

  6. Запустите тест из обозревателя тестов или щелкните правой кнопкой мыши код теста и выберите команду "Выполнить тесты" (или CTRLR, T).

Дальнейшие шаги

Основные сведения о модульных тестах

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

Написание модульных тестов для C/C++