Тесты Nunit Visual Studio 2019 c не выполняются

Обновлено: 03.07.2024

В этом учебном пособии вы познакомитесь с интерактивным процессом создания примера решения шаг за шагом, чтобы изучить концепции модульного тестирования. Если вы предпочитаете следовать руководству, используя готовое решение, просмотрите или загрузите пример кода, прежде чем начать. Инструкции по загрузке см. в разделе Образцы и учебные пособия.

Предпосылки

    или более поздние версии.
  • Текстовый редактор или редактор кода на ваш выбор.

Создание исходного проекта

Открыть окно оболочки. Создайте каталог с именем unit-testing-using-nunit для хранения решения. В этом новом каталоге выполните следующую команду, чтобы создать новый файл решения для библиотеки классов и тестового проекта:

Затем создайте каталог PrimeService. Следующий план показывает структуру каталогов и файлов на данный момент:

Сделайте PrimeService текущим каталогом и выполните следующую команду, чтобы создать исходный проект:

Переименуйте Class1.cs в PrimeService.cs. Вы создаете неудачную реализацию класса PrimeService:

Верните каталог unit-testing-using-nunit. Выполните следующую команду, чтобы добавить проект библиотеки классов в решение:

Создание тестового проекта

Сделайте каталог PrimeService.Tests текущим каталогом и создайте новый проект с помощью следующей команды:

Команда dotnet new создает тестовый проект, использующий NUnit в качестве тестовой библиотеки. Сгенерированный шаблон настраивает средство запуска тестов в файле PrimeService.Tests.csproj:

Тестовому проекту требуются другие пакеты для создания и запуска модульных тестов. dotnet new на предыдущем шаге добавил тестовый SDK Microsoft, тестовую среду NUnit и тестовый адаптер NUnit. Теперь добавьте в проект библиотеку классов PrimeService в качестве еще одной зависимости. Используйте команду dotnet add reference:

Вы можете увидеть весь файл в репозитории примеров на GitHub.

На следующей схеме показан окончательный макет решения:

Выполните следующую команду в каталоге unit-testing-using-nunit:

Создание первого теста

Вы пишете один неудачный тест, делаете его пройденным, а затем повторяете процесс. В каталоге PrimeService.Tests переименуйте файл UnitTest1.cs в PrimeService_IsPrimeShould.cs и замените все его содержимое следующим кодом:

Атрибут [TestFixture] обозначает класс, содержащий модульные тесты. Атрибут [Test] указывает, что метод является тестовым.

Сохраните этот файл и выполните dotnet test, чтобы создать тесты и библиотеку классов, а затем запустить тесты. Средство запуска тестов NUnit содержит точку входа программы для запуска ваших тестов. dotnet test запускает средство выполнения тестов, используя созданный вами проект модульного тестирования.

Ваш тест не пройден. Вы еще не создали реализацию. Чтобы пройти этот тест, напишите простейший работающий код в классе PrimeService:

В каталоге unit-testing-using-nunit еще раз запустите dotnet test. Команда dotnet test запускает сборку для проекта PrimeService, а затем для проекта PrimeService.Tests. После создания обоих проектов он запускает этот единственный тест. Это проходит.

Добавление дополнительных функций

Теперь, когда вы сделали один тестовый проход, пришло время написать больше. Есть несколько других простых случаев для простых чисел: 0, -1. Вы можете добавлять новые тесты с атрибутом [Test], но это быстро становится утомительным. Существуют и другие атрибуты NUnit, которые позволяют вам написать набор подобных тестов. Атрибут [TestCase] ​​используется для создания набора тестов, которые выполняют один и тот же код, но имеют разные входные аргументы. Вы можете использовать атрибут [TestCase], чтобы указать значения для этих входных данных.

Вместо создания новых тестов примените этот атрибут, чтобы создать один тест на основе данных. Тест на основе данных — это метод, который проверяет несколько значений, меньших двух, что является наименьшим простым числом:

Запустите тест dotnet, и два из этих тестов не пройдены. Чтобы все тесты прошли успешно, измените условие if в начале метода Main в файле PrimeService.cs:

Продолжайте итерацию, добавляя больше тестов, больше теорий и больше кода в основную библиотеку. У вас есть готовая версия тестов и полная реализация библиотеки.

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

Сейчас я работаю над решением, в котором сейчас 32 юнит-теста. Я работал с тестировщиком resharper, который отлично работает. Все тесты выполняются, все тесты показывают правильные результаты.

Однако тесты не выполняются при использовании обозревателя тестов Visual Studio.

Обозреватель тестов показывает все модульные тесты, но после нажатия кнопки "Выполнить все" все тесты становятся серыми и не отображают результатов выполнения теста:

введите здесь описание изображения

Я был бы признателен за любые подсказки, объясняющие такое поведение.

Было бы замечательно, если бы VS сказал почему тест не был запущен? Несоответствие целевой платформы, отсутствие тестового адаптера, . :(

@BernhardHofmann Прямо сейчас я столкнулся с подобной проблемой, и оказалось, что VS выдает сообщения об ошибках в разделе «Вывод» > «Тесты». Важный. Разочаровывает тот факт, что VS не делает их более заметными, но это то место, на которое следует обратить внимание в подобной ситуации.

На дворе 2020 год, прошло 5 лет с тех пор, как я задал этот вопрос, и все же, попробовав 10 разных ответов, я не смог запустить тесты nunit. Создание консольного проекта для запуска тестового кода. вздох

71 Ответ 71

Если не все ваши проекты используют AnyCpu, вы также можете проверить соответствие следующих двух параметров:

[Щелкните правой кнопкой мыши тестовый проект] -> свойства -> Сборка -> Целевая платформа — например, x64

[Главное меню] -> Тест -> Настройки теста -> Архитектура процессора по умолчанию -> X64

Я обнаружил, что когда они не совпадают, мой тестовый проект просто не запускается.

Временное изменение значений и их возврат к любому процессору с последующим нажатием кнопки «Сохранить» исправило это для меня. Использование VS 2019 Community Edition в проекте, изначально созданном в VS 2017.

Мне пришлось изменить методы асинхронного тестирования, чтобы они возвращали Task вместо void.

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

Невозможно дождаться завершения асинхронного метода void. Асинхронная пустота — это «выстрелил и забыл». Вот почему их нельзя протестировать.

Фейспалм, который я сделал, когда прочитал это, эхом прокатился по земле. Спасибо, что указали на мою глупость. Это сработало для меня. Проголосовал

Несмотря на то, что оно подано в категорию "Нет духа". Я бы хотел, чтобы за это проголосовали больше, поскольку совершенно очевидно, что ваш тип возвращаемого значения должен быть Task, но его легко забыть (потому что, по-видимому, ни один другой модульный тест в мире не возвращает ничего, кроме пустоты) и отправляет вас в кроличью нору исправления вашего устройства тестовая конфигурация, когда нет реальной проблемы с конфигурацией. Очень хотелось бы, чтобы это просто вызвало компилятор или, по крайней мере, выдало ошибку времени выполнения.

@pat8719, звучит как хорошая идея для анализатора кода. Их не так уж сложно написать. Я только что написал о том, что xunit выполняет async void Foo(), и их анализаторы не жаловались, но они, безусловно, могли бы добавить такой. Копия: @bradwilson

Это была и моя проблема. Однако в VS 2019 этого не происходит с Xunit. Но это всегда происходит при использовании MsTest + async void .

Если вы используете NUnit, а не MSTest, вам потребуется тестовый адаптер NUnit 2 или тестовый адаптер NUnit 3 для Visual Studio ≥ 2012/2013.

В VS 2019 я также установил тестовый адаптер Extension Nunit 3, и он работал. Одно примечание: мне также нужно было обновить Visual Studio.

+1 Спасибо! Даже с последней версией VS 2019 16.5.5 я вообще не получил сообщения, указывающего, что не так. Он молча провалился.

У меня была такая же проблема в VS 2017. В моем случае она решилась перезапуском VS.

мой предыдущий комментарий о том, почему я поставил этот отрицательный голос, был удален, поэтому я буду немного яснее. Это не решение проблемы; это очень временное исправление, которое не решает основной проблемы. Я не думаю, что SO должно быть местом, куда люди должны приходить, чтобы им сказали «выключить и снова включить», это знания, которые нужно усвоить задолго до того, как вы попадете сюда. Решение см. в ответе Джозефа Симпсона.

@lukkea Я последовал ответу Джозефа Симпсона и подтвердил, что все мои проекты используют AnyCpu. У меня все еще была проблема, описанная здесь. Мне помог простой перезапуск VS. Подобные сбои в VS2012 случаются не впервые (и не только на моей машине). Я согласен с вами, что это не очень хорошее решение, но если с проектом все в порядке, это может быть единственной помощью. Однако следует проверить, не помогает ли очистка перестроения.

Если бы только "включение и выключение" решило бы все мои проблемы. Все еще удивительно, как много он исправляет. Немного смущает, что мне пришлось обратиться к stackoverflow, чтобы получить напоминание об этом, но я нашел этот ответ полезным.

Мне пришлось установить средство запуска тестов xunit, соответствующее моей версии xunit. Затем перезапустите визуальную студию. Тогда это сработало

TLDR: обновите тестовые пакеты, просмотрите выходные данные -> тестовая консоль

Я боролся с этим полтора дня. вот что я сделал, чтобы решить эту проблему:

Естественно, я перешел в -> Консоль вывода -> Раскрывающийся список "Тест" в VS 2019 и посмотрел на вывод. Ничего полезного там нет.

Шаг первый: обновите MSTest.TestAdapter и MSTest.TestFramework до версии 2.0.0

Шаг второй решения: теперь консоль вывода -> выпадающий список Test начал показывать один за другим отсутствующие пакеты и неправильные перенаправления привязки

Шаг третий решения. Добавьте отсутствующие пакеты вручную. Для меня это было

Шаг 4 решения: удалены/исправлены ненужные перенаправления привязки.

Создайте проект для тестирования

Откройте Visual Studio.

В меню "Файл" выберите "Создать" > "Проект".

Появится диалоговое окно "Новый проект".

Назовите проект "Банк" и нажмите "ОК".

Проект Bank создается и отображается в обозревателе решений с файлом Program.cs, открытым в редакторе кода.

Если файл Program.cs не открыт в редакторе, дважды щелкните файл Program.cs в обозревателе решений, чтобы открыть его.

Откройте Visual Studio.

В стартовом окне выберите Создать новый проект.

Назовите проект "Банк" и нажмите "Далее".

Проект Bank создается и отображается в обозревателе решений с файлом Program.cs, открытым в редакторе кода.

Если файл Program.cs не открыт в редакторе, дважды щелкните файл Program.cs в обозревателе решений, чтобы открыть его.

Переименуйте файл в BankAccount.cs, щелкнув правой кнопкой мыши и выбрав "Переименовать" в обозревателе решений.

В меню "Сборка" нажмите "Создать решение" (или нажмите Ctrl + SHIFT + B).

Теперь у вас есть проект с методами, которые вы можете протестировать. В этой статье тесты сосредоточены на методе дебета. Метод Debit вызывается при снятии денег со счета.

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

В меню "Файл" выберите "Добавить" > "Новый проект".

Вы также можете щелкнуть правой кнопкой мыши решение в обозревателе решений и выбрать "Добавить" > "Новый проект".

В поле Имя введите BankTests и нажмите кнопку ОК.

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

В Visual Studio 2019 версии 16.9 шаблоном проекта MSTest является проект модульного тестирования.

Назовите проект BankTests и нажмите "Далее".

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

В проекте BankTests добавьте ссылку на проект Bank.

В обозревателе решений выберите Зависимости в проекте BankTests, а затем выберите Добавить ссылку (или Добавить ссылку на проект) в контекстном меню.

В диалоговом окне "Диспетчер ссылок" разверните "Проекты", выберите "Решение" и отметьте элемент "Банк".

Нажмите "ОК".

Создайте тестовый класс

Создайте тестовый класс для проверки класса BankAccount. Вы можете использовать файл UnitTest1.cs, созданный шаблоном проекта, но дать файлу и классу более описательные имена.

Переименовать файл и класс

  1. Чтобы переименовать файл, в обозревателе решений выберите файл UnitTest1.cs в проекте BankTests. В контекстном меню выберите "Переименовать" (или нажмите F2), а затем переименуйте файл в BankAccountTests.cs.
  1. Чтобы переименовать класс, выберите "Да" в появившемся диалоговом окне и спросите, хотите ли вы также переименовать ссылки на элемент кода.
  1. Чтобы переименовать класс, поместите курсор на UnitTest1 в редакторе кода, щелкните правой кнопкой мыши и выберите "Переименовать" (или нажмите F2). Введите BankAccountTests и нажмите Enter.

Файл BankAccountTests.cs теперь содержит следующий код:

Добавить оператор using

Добавьте оператор using в тестовый класс, чтобы иметь возможность обращаться к тестируемому проекту без использования полных имен. В верхней части файла класса добавьте:

Требования к тестовому классу

Атрибут [TestClass] обязателен для любого класса, содержащего методы модульного тестирования, которые вы хотите запустить в обозревателе тестов.

Каждый метод тестирования, который должен распознаваться обозревателем тестов, должен иметь атрибут [TestMethod].

У вас могут быть другие классы в проекте модульного тестирования, у которых нет атрибута [TestClass], и у вас могут быть другие методы в тестовых классах, у которых нет атрибута [TestMethod]. Вы можете вызывать эти другие классы и методы из своих тестовых методов.

Создайте первый тестовый метод

В этой процедуре вы напишете методы модульного тестирования для проверки поведения метода Debit класса BankAccount.

Необходимо проверить как минимум три варианта поведения:

Метод создает исключение ArgumentOutOfRangeException, если сумма дебета превышает баланс.

Метод генерирует исключение ArgumentOutOfRangeException, если сумма дебета меньше нуля.

Если сумма дебета действительна, метод вычитает сумму дебета из остатка на счете.

Вы можете удалить метод TestMethod1 по умолчанию, потому что вы не будете использовать его в этом пошаговом руководстве.

Чтобы создать тестовый метод

Первый тест проверяет, что действительная сумма (то есть та, которая меньше остатка на счете и больше нуля) снимает правильную сумму со счета.Добавьте следующий метод в этот класс BankAccountTests:

Этот метод прост: он устанавливает новый объект BankAccount с начальным балансом, а затем снимает допустимую сумму. Он использует метод Assert.AreEqual, чтобы убедиться, что конечный баланс соответствует ожидаемому. Такие методы, как Assert.AreEqual, Assert.IsTrue и другие, часто используются в модульном тестировании. Дополнительные сведения о написании модульного теста см. в разделе Написание тестов.

Требования к методу тестирования

Метод тестирования должен соответствовать следующим требованиям:

Он украшен атрибутом [TestMethod].

Возвращает void .

У него не может быть параметров.

Создайте и запустите тест

В меню "Сборка" выберите "Создать решение" (или нажмите Ctrl + SHIFT + B).

Если обозреватель тестов не открыт, откройте его, выбрав «Тест» > «Windows» > «Обозреватель тестов» в верхней строке меню (или нажмите Ctrl + E, T).

Выберите «Выполнить все», чтобы запустить тест (или нажмите Ctrl + R, V).

Во время выполнения теста строка состояния в верхней части окна обозревателя тестов анимируется. В конце выполнения теста полоса становится зеленой, если все методы тестирования пройдены успешно, или красной, если какой-либо из тестов не пройден.

В этом случае тест не пройден.

Выберите метод в обозревателе тестов, чтобы просмотреть подробные сведения в нижней части окна.

Исправьте свой код и перезапустите тесты

Результат проверки содержит сообщение с описанием ошибки. Для метода AreEqual в сообщении отображается ожидаемое и фактически полученное. Вы ожидали, что баланс уменьшится, но вместо этого он увеличился на сумму снятия.

В ходе модульного тестирования была обнаружена ошибка: сумма снятия добавляется к балансу аккаунта, когда ее следует вычесть.

Исправить ошибку

Чтобы исправить ошибку, в файле BankAccount.cs замените строку:

Повторить тест

В обозревателе тестов выберите «Выполнить все», чтобы повторно запустить тест (или нажмите Ctrl + R, V). Красно-зеленая полоса становится зеленой, указывая на то, что тест пройден.

Test Explorer в Visual Studio 2019 показывает пройденный тест

Обозреватель тестов в Visual Studio 2019, показывающий пройденный тест

Используйте модульные тесты для улучшения кода

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

Анализ проблем

Вы создали тестовый метод, чтобы убедиться, что действительная сумма правильно вычтена в методе дебетования. Теперь убедитесь, что метод генерирует исключение ArgumentOutOfRangeException, если сумма дебета:

  • больше остатка или
  • меньше нуля.

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

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

Используйте метод ThrowsException, чтобы подтвердить, что было создано правильное исключение. Этот метод приводит к сбою теста, если только не возникнет исключение ArgumentOutOfRangeException. Если вы временно измените тестируемый метод, чтобы создать более общее исключение ApplicationException, когда сумма дебета меньше нуля, тест будет вести себя правильно, то есть не пройден.

Чтобы проверить случай, когда снимаемая сумма превышает баланс, выполните следующие действия:

Создайте новый тестовый метод с именем Debit_WhenAmountIsMoreThanBalance_ShouldThrowArgumentOutOfRange .

Скопируйте тело метода из Debit_WhenAmountIsLessThanZero_ShouldThrowArgumentOutOfRange в новый метод.

Установите для параметра debitAmount число, превышающее баланс.

Запустите два теста и убедитесь, что они пройдены.

Продолжить анализ

Тестируемый метод можно улучшить. С текущей реализацией у нас нет возможности узнать, какое условие (количество > m_balance или сумма) привело к возникновению исключения во время теста. Мы просто знаем, что где-то в методе возникло исключение ArgumentOutOfRangeException. Было бы лучше, если бы мы могли определить, какое условие в BankAccount.Debit вызвало исключение ( сумма > m_balance или сумма ), чтобы мы могли быть уверены, что наш метод правильно проверяет свои аргументы на работоспособность.

Снова посмотрите на тестируемый метод ( BankAccount.Debit ) и обратите внимание, что оба условных оператора используют конструктор ArgumentOutOfRangeException, который просто принимает имя аргумента в качестве параметра:

Вы можете использовать конструктор, который сообщает гораздо более подробную информацию: ArgumentOutOfRangeException(String, Object, String) включает имя аргумента, значение аргумента и определенное пользователем сообщение.Вы можете реорганизовать тестируемый метод, чтобы использовать этот конструктор. Более того, вы можете использовать общедоступные члены типа для указания ошибок.

Рефакторинг тестируемого кода

Во-первых, определите две константы для сообщений об ошибках в области класса. Поместите их в тестируемый класс BankAccount :

Затем измените два условных оператора в методе Debit:

Рефакторинг методов тестирования

Рефакторинг тестовых методов путем удаления вызова Assert.ThrowsException. Оберните вызов Debit() в блок try/catch, перехватите конкретное ожидаемое исключение и проверьте связанное с ним сообщение. Метод Microsoft.VisualStudio.TestTools.UnitTesting.StringAssert.Contains позволяет сравнивать две строки.

Теперь Debit_WhenAmountIsMoreThanBalance_ShouldThrowArgumentOutOfRange может выглядеть так:

Повторное тестирование, переписывание и повторный анализ

В настоящее время метод тестирования не обрабатывает все необходимые случаи. Если тестируемый метод, метод Debit, не смог создать ArgumentOutOfRangeException, когда debitAmount был больше, чем баланс (или меньше нуля), тестовый метод будет пройден. Это нехорошо, потому что вы хотите, чтобы тестовый метод потерпел неудачу, если не будет выдано исключение.

Это ошибка в методе тестирования. Чтобы решить эту проблему, добавьте утверждение Assert.Fail в конце метода тестирования, чтобы обрабатывать случай, когда исключение не выдается.

Повторный запуск теста показывает, что теперь тест проваливается, если перехвачено правильное исключение. Блок catch перехватывает исключение, но метод продолжает выполняться и завершается ошибкой при новом утверждении Assert.Fail. Чтобы решить эту проблему, добавьте оператор return после StringAssert в блоке catch. Повторный запуск теста подтверждает, что вы устранили эту проблему. Окончательная версия Debit_WhenAmountIsMoreThanBalance_ShouldThrowArgumentOutOfRange выглядит так:

Заключение

Усовершенствования тестового кода привели к созданию более надежных и информативных методов тестирования. Но что более важно, они также улучшили тестируемый код.

В этом пошаговом руководстве используется платформа модульного тестирования Майкрософт для управляемого кода. Обозреватель тестов также может запускать тесты из сторонних платформ модульных тестов, которые имеют адаптеры для обозревателя тестов. Дополнительные сведения см. в разделе Установка сторонних платформ модульного тестирования.

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

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

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

Откройте проект, который вы хотите протестировать, в Visual Studio.

В обозревателе решений выберите узел решения. Затем в верхней строке меню выберите «Файл» > «Добавить» > «Новый проект».

В диалоговом окне "Новый проект" найдите нужный проект модульного тестирования.

Разверните узел Установлено, выберите язык, который вы хотите использовать для своего тестового проекта, а затем выберите Тест.

Шаблон проекта модульного тестирования в Visual Studio 2022

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

Шаблон проекта модульного тестирования в Visual Studio 2019

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

Модульный тест шаблон проекта в Visual Studio 2017

Выберите имя для тестового проекта, например HelloWorldTests, и нажмите OK.

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

Модульный тест проект в обозревателе решений

Модульный тест проект в обозревателе решений

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

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

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

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

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

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

Чтобы открыть обозреватель тестов, выберите «Тест» > «Обозреватель тестов» в верхней строке меню (или нажмите Ctrl + E, T).

Чтобы открыть обозреватель тестов, выберите «Тест» > «Windows» > «Обозреватель тестов» в верхней строке меню.

Запустите модульные тесты, нажав "Выполнить все" (или нажав Ctrl + R, V).

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

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

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

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

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

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

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

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

Включите динамическое модульное тестирование в меню "Тест", выбрав "Тестирование" > "Живое модульное тестирование" > "Начать".

Включить живое модульное тестирование

Начать динамическое модульное тестирование в Visual Studio 2019

Начать динамическое модульное тестирование в Visual Studio 2022

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

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

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

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

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

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

Дополнительную информацию о реальном модульном тестировании см. в разделе Живое модульное тестирование.

Использовать стороннюю тестовую среду

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

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

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

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

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

Щелкните правой кнопкой мыши решение в обозревателе решений и выберите "Добавить" > "Новый проект".

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

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

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

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

Нажмите "Далее", назовите проект и нажмите "Создать".

Назовите проект и нажмите OK, чтобы создать его.

Шаблон проекта включает ссылки NuGet на NUnit и NUnit3TestAdapter.

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

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

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

Щелкните правой кнопкой мыши проект в обозревателе решений и выберите Добавить > Ссылка. (Вы также можете добавить ссылку из контекстного меню узла «Ссылки» или «Зависимости».)

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

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

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

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

Читайте также: