Перейти к содержимому

Как запустить тесты в visual studio code

  • автор:

Как запустить все тесты в Visual Studio Code

Последняя версия VS Code уже предоставляет простой способ запуска одного теста, указанного на Тайлер Лонг, ответить на вопрос Отладка тестов xunit в .NET Core и Visual Studio Code.

Тем не менее, я смотрю, как я могу запустить все тесты, содержащиеся в классе тестового набора в VS Code (без отладки)?

Единственный способ, которым я нашел, — добавить к launch.json конкретную конфигурацию как следующую, но которую я могу запустить только в отладке (я хотел бы запустить ее без отладки):

< "name": ".NET Core Xunit tests", "type": "coreclr", "request": "launch", "preLaunchTask": "build", "program": "/usr/local/share/dotnet/dotnet", "args": ["test"], "cwd": "$/test/MyProject.Tests", "externalConsole": false, "stopAtEntry": false, "internalConsoleOptions": "openOnSessionStart" > 

ОТВЕТЫ

Ответ 1

Вы можете выполнить все тесты в проекте, выполнив dotnet test на терминале. Это удобно, если у вас уже открыт терминал, но вы также можете добавить его в код Visual Studio.

Если вы нажмете Cmd — Shift — P , чтобы открыть Палитры команд и введите «test», вы можете запустить команду Запустить тестовую задачу. По умолчанию это ничего не делает, но вы можете отредактировать tasks.json , чтобы сообщить ему, как запустить dotnet test для вас:

tasks.json

Эти два определения задачи свяжут команды Запустить сборку и Запустить тестовую задачу в коде Visual Studio на dotnet build и dotnet test соответственно.

Ответ 2

Существует намного более простой способ запуска всех тестов:

  • Установите расширение .NET Core Test Explorer
  • Откройте тестовый проект .NET Core в VS Code или установите dotnet-test-explorer.testProjectPath в путь к папке тестового проекта .NET Core в settings.json
  • В проводнике .NET Explorer Explorer из обозревателя все тесты будут автоматически обнаружены, и вы сможете запускать все тесты или определенный тест

test-explorer

Ответ 3

Чтобы построить ответ GraehamF, конфигурация, требуемая в tasks.json для dotnet 2.0, отличается.

< "version": "2.0.0", "tasks": [ < . >, < "label": "test", "command": "dotnet", "type": "shell", "group": "test", "args": [ "test", "$/testprojectfolder/testprojectname.csproj" ], "presentation": < "reveal": "silent" >, "problemMatcher": "$msCompile" > ] 

Я обнаружил, что, когда установлены Visual Studio и VS Code, размещение ссылки csproj в свойстве команды (как и в ответе GraehamF) привело к тому, что Visual Studio была открыта, а не тесты, выполняемые в VS-коде.

(Я бы поставил это в комментарии, но у меня недостаточно очков репутации.)

Ответ 4

Как и @Nate Barbettini, но для .Net Core Standard 2.0 (netcoreapp2.0).

Как запустить тесты в visual studio code

Visual Studio Code (далее vscode) является продвинутым текстовым редактором, возможности которого значительно превосходят возможности встроенного в Тестер редактора модулей. При разработке большого числа сложных тестов, улучшенная эргономика работы с кодом может стать важной составляющей всего процесса написания, анализа и запуска сценариев.

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

Для работы в интегрированном режиме, оба приложения (Тестер и vscode) должны быть запущены.

Подготовка Тестера¶

Данный раздел справки для версии 1.3.5 не актуален и находится в процессе доработки

Для того, чтобы начать взаимодействовать с vscode, необходимо смонтировать приложение(я) Тестера в папки на диске:

Затем, необходимо создать запись для монтируемых приложений, например так:

Внимание! Флаг Маппинг должен быть включен, иначе Тестер не сможет общаться с vscode в автоматическом режиме.

Если вы монтируете более одного приложения, рекомендуется указывать для них общий начальный путь к папке на диске. Например, на картинке выше, приложение ERP2 и имеют общий начальный путь c:\tests\. Такая структура (общий начальный путь) позволяет плагину vscode редактировать и осуществлять переходы к связанным сценариям сразу для всех смонтированных приложений с общей начальной папкой. В противном случае, переходы к связанным сценариям, например, при нажатии F12 на параметре метода Вызвать ( “Общее.Найти” ) , будут затруднены.

Итак, после задания монтируемых приложений, нужно выгрузить все сценарии согласно указанных директорий:

Откроется обработка выгрузки сценариев, где необходимо проделать следующее:

Внимание! Если у вас в списке (что на картинке выше) отсутствуют приложения, которые вы монтировали в репозиториях, тогда возможно, по каким-то причинам Тестеру не удалось создать узлы обмена сценариями. В этом случае, необходимо через меню Все функции, открыть план обмена Изменения, и создать в нем необходимый узел, пример на картинке ниже:

На этом этапе, подготовительная работа в Тестере завершена.

Подготовка Visual Studio Code¶

Необходимо скачать и установить vscode. Страница для скачивания: https://code.visualstudio.com/

Внимание! если вы скачали 32-битную версию или установили vscode в директорию, отличную от C:\Program Files\Microsoft VS Code, тогда укажите в Тестере, в форме настройки компьютера, путь к запускаемому файлу vscode, как показано на рисунках ниже

Работа в vscode¶

На данном этапе все настройки завершены, теперь можно редактировать и запускать сценарии из vscode.

На примере демо-базы это будет выглядеть так:

После этого, запустится vscode и предложит вам установить плагин, как показано на картинке ниже:

Нажмите на указанную кнопку и установите предлагаемый плагин:

После того, как расширение Tester 1C будет установлено (вместе с ним, будет установлено расширение xDrivenDevelopment.language-1c-bsl от специалистов команды xDrivenDevelopment, за что им отдельная благодарность), необходимо перезагрузить редактор:

На этом настройка завершена, можно начинать работу.

На момент написания статьи, плагин vscode поддерживает следующие операции:

  1. Интеллисенс всех функций тестера на двух языках (справка пока только на русском). Навигация к сценариям, заданным в методах Вызвать () и Позвать () .
  2. Считывание полей тестируемого приложения в процесса набора параметра функции с фильтрацией по типу. Примечание: тестируемое приложение при этом должно быть запущено
  3. Запуск теста, кнопка F5
  4. Запуск выделенного фрагмента кода, комбинация ctrl+alt+R
  5. Синтаксический контроль, комбинация ctrl+F7
  6. Вывод диагностических сообщений в панель Output (см. метод ВСтудию()/VStudio() )
  7. Вывод сообщений об ошибках в панель Problems
  8. Назначение основного сценария (кнопка F1 / Set Main )
  9. Сниппеты. При наборе тест плагин выдаст все допустимые методы Тестера

Другие полезные комбинации клавиш:

ctrl + E . Открывает окно нечеткого поиска сценария для его открытия в новой вкладке.

ctrl + shift + E . Активация дерева файлов проекта.

alt + F12 . Открытие в сплывающем окне модуля процедуры, функции или сценария. Удобно использовать для беглого просмотра когда связанного сценария.

ctrl + shift + O . Быстрый переход к процедуре/функции кода сценария.

ctrl + shift + F , ctrl + shift + H . Глобальный поиск и глобальная замена. Важной способностью этих функций является возможность указания начальной папки (поле чувствительно к регистру) поиска/замены.

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

Полезные приемы работы¶

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

Удаленное тестирование (экспериментальная предварительная версия)

Область применения:yesVisual Studio Visual Studio для Mac noVisual Studio Code no

Удаленное тестирование позволяет разработчикам подключать Visual Studio 2022 к удаленным средам для запуска и отладки тестов. Эта функция полезна для разработчиков на разных платформах, которые развертывают код в нескольких целевых средах, таких как разные операционные системы Windows или Linux. Например, разработчик обычно отправляет изменения в конвейер CI, чтобы получить отзыв от тестового запуска в Linux. С помощью функции удаленного тестирования вы можете запускать тесты Linux прямо из Visual Studio, подключив тест Обозреватель к удаленной среде.

Требования

Следующие требования применяются к экспериментальной версии удаленного тестирования:

  • Необходимо запустить Visual Studio 2022 с обновлением 17.0 ( предварительная версия 3 или более поздняя версия).
  • В настоящее время функция поддерживает только тесты .NET.
    • Если вы заинтересованы в поддержке удаленного тестирования для других языков, вы можете подать предложение или добавить существующее предложение. Поддержка удаленного тестирования C++.

    Настройка среды удаленного тестирования

    Среды задаются с помощью файла testenvironments.json в корневом каталоге решения. Структура файла JSON реализует следующую схему:

    Свойства среды в файле testenvironments.json

    Файл testenvironments.json имеет следующие свойства среды.

    Свойство Тип Описание:
    name строка Понятное имя среды, отображаемое в Обозревателе тестов. Он должен быть уникальным в файле testEnvironments.json .
    localRoot строка [Необязательно] Путь на локальном компьютере (абсолютный или относительно каталога решения), который проецируется в удаленную среду. Если не указано, значение по умолчанию является корневым репозиторием в контексте репозитория Git (в Visual Studio 2022 версии 17.1 и более поздних версиях). Вне репозитория Git значение по умолчанию — каталог решения.
    type перечисление Указывает тип удаленной среды. Значение может быть либо docker , wsl либо ssh .
    dockerImage строка Имя образа Docker для загрузки в среде Docker.
    Это значение необходимо, если среда type имеет значение docker .
    dockerFile строка Путь к файлу Docker, заданному относительно каталога решения, для создания образа и загрузки в среду Docker.
    Это значение необходимо, если среда type имеет значение docker .
    wslDistribution строка Имя локального распределения WSL, в котором будет выполняться тестовая среда.
    Это значение необходимо, если среда type имеет значение wsl .
    remoteUri строка URI, указывающий подключение к удаленному компьютеру. Например, ssh://user@hostname:22 .
    Это значение необходимо, если среда type имеет значение ssh .

    Необходимо указать либо dockerImage dockerFile свойство, но не оба свойства.

    Подключения к локальному контейнеру

    Чтобы подключиться к контейнеру, запущенному локально, необходим Docker Desktop на локальном компьютере. При необходимости включите интеграцию WSL2 для повышения производительности.

    Для Файла Dockerfile среда может быть указана в файле testEnvironments.json в корневом каталоге решения. В нем используются следующие свойства:

    < "name": "", "type": "docker", "dockerImage": "", > 

    В следующем примере показан файл testenvironments.json для локального образа контейнера с именем .

    В следующем примере показан Dockerfile для выполнения тестов, предназначенных для .NET 5.0. Вторая строка гарантирует, что отладчик сможет подключиться к контейнеру и запустить его.

    FROM mcr.microsoft.com/dotnet/core/sdk:5.0 RUN wget https://aka.ms/getvsdbgsh && \ sh getvsdbgsh -v latest -l /vsdbg 

    Контейнер должен иметь собранный образ на локальном компьютере. Вы можете создать контейнер с помощью команды docker build -t -f . Обязательно включить период . в конце команды.

    В следующем примере показано использование dockerFile свойства вместо dockerImage свойства.

    Локальные подключения WSL2

    Для удаленного запуска тестов на WSL2 необходимо включить интеграцию WSL2 на локальном компьютере.

    Среда может быть указана в файле testEnvironments.json в корне решения с помощью следующей схемы. Замените значение wslDistribution свойства установкой дистрибутива WSL2.

    SSL-подключения

    Вы можете добавлять или удалять SSH-подключения в разделе Инструменты > Параметры > Кросс-платформенные > Диспетчер подключений. Выберите «Добавить «, чтобы ввести имя узла, порт и необходимые учетные данные.

    Среда может быть указана в файле testEnvironments.json в корне решения с помощью следующей схемы. Замените значение свойства значением remoteUri SSH.

    Необходимые условия для удаленной среды Windows

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

      Убедитесь, что включена проектируемая файловая система Windows. Чтобы включить его, можно запустить следующий код из окна PowerShell администратора:

     Enable-WindowsOptionalFeature -Online -FeatureName Client-ProjFS -NoRestart 
    Start-Service sshd 
    1. Установите номер SKU удаленных средств в удаленной среде.
    2. Запустите удаленный отладчик от имени администратора и убедитесь, что у пользователя Visual Studio есть разрешения на подключение.
    Предварительные требования для удаленной среды Linux

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

    1. Убедитесь, что протокол SSH настроен и работает.
    2. Установите fuse3 с помощью диспетчера пакетов.
    3. Убедитесь, что соответствующая среда выполнения .NET, необходимая для тестов, установлена в удаленной среде Linux.

    Использование обозревателя тестов для запуска и отладки удаленных тестов

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

    • Активная среда выбирается с помощью раскрывающегося списка на панели инструментов обозревателя тестов. В настоящее время может быть активна только одна тестовая среда. Remote testing environment drop down in Test Explorer
    • После выбора среды тесты обнаруживаются и выполняются в новой среде. Tests are discovered and executed in remote environments
    • Теперь вы можете выполнять и отлаживать тесты в удаленных средах. View test results from remote environment in the test explorer
    • Проверка Обозреватель может предложить установить некоторые отсутствующие предварительные требования среды и попытаться установить отсутствующие зависимости. Однако основная часть подготовки удаленной среды составляет до спецификации пользователя.

    См. также

    • Отладка модульных тестов с помощью Обозревателя тестов
    • Выполнение модульного теста как 64-разрядного процесса
    • Вопросы и ответы по обозревателю тестов

    Руководство. Тестирование библиотеки классов .NET с помощью .NET с помощью Visual Studio

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

    Предварительные условия

    • В этом руководстве используется решение, созданное при работе со статьей Создание библиотеки классов .NET в Visual Studio.

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

    Модульные тесты обеспечивают автоматическое тестирование программного обеспечения во время разработки и публикации. MSTest — это одна из трех доступных для выбора платформ тестирования. Другими являются xUnit и nUnit.

    1. Запустите среду Visual Studio.
    2. Откройте решение ClassLibraryProjects , созданное при работе со статьей Создание библиотеки классов .NET в Visual Studio.
    3. Добавьте в решение новый проект модульного теста с именем StringLibraryTest.
      1. Щелкните решение в обозревателе решений правой кнопкой мыши и выберите Добавить>Новый проект.
      2. На странице Добавить новый проект введите в поле поиска mstest. Выберите C# или Visual Basic из списка языков, а затем — Все платформы из списка платформ.
      3. Выберите шаблон Тестовый проект MSTest и щелкните Далее.
      4. На странице Настроить новый проект введите StringLibraryTest в поле Имя проекта. Теперь щелкните Далее.
      5. На странице «Дополнительные сведения» выберите .NET 8 (предварительная версия) в поле Framework. Щелкните Создать.
      namespace StringLibraryTest; [TestClass] public class UnitTest1 < [TestMethod] public void TestMethod1() < >> 
      Imports Microsoft.VisualStudio.TestTools.UnitTesting Namespace StringLibraryTest Public Class UnitTest1 Sub TestSub() End Sub End Class End Namespace 
      • Он импортирует пространство имен Microsoft.VisualStudio.TestTools.UnitTesting, которое содержит типы, используемые для модульного тестирования. В C#пространство имен импортируется с помощью global using директивы GlobalUsings.cs .
      • Он применяет атрибут TestClassAttribute к классу UnitTest1 .
      • Он применяет атрибут TestMethodAttribute для определения TestMethod1 в C# или TestSub в Visual Basic.

      При запуске модульного теста автоматически выполняются все методы теста, помеченные атрибутом [TestMethod], в тестовом классе, помеченном атрибутом [TestClass].

      Добавление ссылки на проект

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

      1. В обозревателе решений правой кнопкой мыши щелкните узел Зависимости в проекте StringLibraryTest и в контекстном меню выберите пункт Добавить ссылку на проект.
      2. В диалоговом окне Диспетчер ссылок разверните узел Проекты и установите флажок рядом с пунктом StringLibrary. Добавление ссылки на сборку StringLibrary позволяет компилятору находить методы StringLibrary во время компиляции проекта StringLibraryTest.
      3. Нажмите ОК.

      Добавление и выполнение методов модульного теста

      При запуске модульного теста Visual Studio выполняет каждый метод, помеченный TestMethodAttribute атрибутом в классе, помеченном атрибутом TestClassAttribute . Метод теста завершается, когда происходит первый сбой или когда все тесты, содержащиеся в методе, будут успешно выполнены.

      В самых распространенных тестах вызываются члены класса Assert. Многие методы утверждения (Assert) принимают по крайней мере два параметра, из которых один представляет ожидаемый результат теста, а второй — фактический результат теста. Наиболее популярные из этих методов класса Assert перечислены в следующей таблице:

      Методы утверждения Функция
      Assert.AreEqual Проверяет равенство двух значений или объектов. Утверждение не выполняется, если значения или объекты не равны.
      Assert.AreSame Проверяет, что две объектные переменные ссылаются на один и тот же объект. Утверждение не выполняется, если переменные ссылаются на разные объекты.
      Assert.IsFalse Проверяет, что условие имеет значение false . Утверждение не выполняется, если условие имеет значение true .
      Assert.IsNotNull Проверяет, что объект не имеет значение null . Утверждение не выполняется, если объект является null .

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

      Для тестирования метода StringLibrary.StartsWithUpper необходимо предоставить несколько строк, которые начинаются с символов верхнего регистра. Предполагается, что в этих случаях метод возвратит true , поэтому можно вызвать метод Assert.IsTrue. Представьте также несколько строк, которые не начинаются с символов верхнего регистра. Предполагается, что в этих случаях метод возвратит false , поэтому можно вызвать метод Assert.IsFalse.

      Так как ваш метод библиотеки обрабатывает строки, нам нужно проверить правильность обработки пустых строк ( String.Empty ) (так называется допустимая строка, которая не содержит символов и для которой свойство Length имеет значение 0) и строки null , которая не была инициализирована. Метод StartsWithUpper можно вызвать напрямую как статический метод и передать ему один аргумент типа String. Или метод StartsWithUpper можно вызвать как метод расширения для переменной string , которой назначено значение null .

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

      Создание методов теста:

        В окне кода UnitTest1.cs или UnitTest1.vb замените отображаемый код на следующий текст:

      using UtilityLibraries; namespace StringLibraryTest < [TestClass] public class UnitTest1 < [TestMethod] public void TestStartsWithUpper() < // Tests that we expect to return true. string[] words = < "Alphabet", "Zebra", "ABC", "Αθήνα", "Москва" >; foreach (var word in words) < bool result = word.StartsWithUpper(); Assert.IsTrue(result, string.Format("Expected for '': true; Actual: ", word, result)); > > [TestMethod] public void TestDoesNotStartWithUpper() < // Tests that we expect to return false. string[] words = < "alphabet", "zebra", "abc", "αυτοκινητοβιομηχανία", "государство", "1234", ".", ";", " " >; foreach (var word in words) < bool result = word.StartsWithUpper(); Assert.IsFalse(result, string.Format("Expected for '': false; Actual: ", word, result)); > > [TestMethod] public void DirectCallWithNullOrEmpty() < // Tests that we expect to return false. string?[] words = < string.Empty, null >; foreach (var word in words) < bool result = StringLibrary.StartsWithUpper(word); Assert.IsFalse(result, string.Format("Expected for '': false; Actual: ", word == null ? "" : word, result)); > > > > 
      Imports Microsoft.VisualStudio.TestTools.UnitTesting Imports UtilityLibraries Namespace StringLibraryTest Public Class UnitTest1 Public Sub TestStartsWithUpper() ' Tests that we expect to return true. Dim words() As String = For Each word In words Dim result As Boolean = word.StartsWithUpper() Assert.IsTrue(result, $"Expected for '': true; Actual: ") Next End Sub Public Sub TestDoesNotStartWithUpper() ' Tests that we expect to return false. Dim words() As String = For Each word In words Dim result As Boolean = word.StartsWithUpper() Assert.IsFalse(result, $"Expected for '': false; Actual: ") Next End Sub Public Sub DirectCallWithNullOrEmpty() ' Tests that we expect to return false. Dim words() As String = For Each word In words Dim result As Boolean = StringLibrary.StartsWithUpper(word) Assert.IsFalse(result, $"Expected for '", word)>': false; Actual: ") Next End Sub End Class End Namespace 

      Тест на символы верхнего регистра в методе TestStartsWithUpper включает заглавную греческую букву «альфа» (U+0391) и заглавную кириллическую букву «М» (U+041C). Тест на символы нижнего регистра в методе TestDoesNotStartWithUpper включает строчную греческую букву «альфа» (U+03B1) и строчную кириллическую букву «г» (U+0433).

    4. В строке меню выберите Файл>Сохранить UnitTest1.cs как или Файл>Сохранить UnitTest1.vb как. В диалоговом окне Сохранить файл как щелкните стрелку рядом с кнопкой Сохранить и выберите вариант Сохранить с кодировкой. Visual Studio Save File As dialog
    5. В диалоговом окне Подтверждение сохранения нажмите кнопку Да, чтобы сохранить файл.
    6. В диалоговом окне Дополнительные параметры сохранения выберите в раскрывающемся списка Кодировка вариант Юникод (UTF-8, с сигнатурой), кодовая страница 65001 и нажмите кнопку ОК. Visual Studio Advanced Save Options dialogЕсли вы не сохраните исходный код в кодировке UTF8, Visual Studio может сохранить его как файл ASCII. В этом случае среде выполнения не удастся правильно раскодировать символы UTF8 за пределами стандартного диапазона ASCII, и результаты теста будут неправильными.
    7. В строке меню выберите Тест>Выполнить все тесты. Если окно обозревателя тестов не открыто, откройте его, выбрав Тест>Обозреватель тестов. В разделе Пройденные тесты перечислены три теста, а раздел Сводка содержит результат тестового запуска. Test Explorer window with passing tests

    Обработка сбоев теста

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

      Измените массив words в методе TestDoesNotStartWithUpper , включив в него строку «Error». Сохранять файл не требуется, поскольку при сборке решения для выполнения тестов Visual Studio автоматически сохраняет открытые файлы.

    string[] words = < "alphabet", "Error", "zebra", "abc", "αυτοκινητοβιομηχανία", "государство", "1234", ".", ";", " " >; 
    Dim words() As String =
  • Выполните тест, последовательно выбрав в строке меню пункты Тест>Выполнить все тесты. В окне Обозреватель тестов будет указано, что два теста выполнены успешно, а третий завершился ошибкой. Test Explorer window with failing tests
  • Выберите непройденный тест TestDoesNotStartWith . В окне Обозреватель тестов появится сообщение, созданное методом утверждения: «Assert.IsFalse failed. Expected for ‘Error’: false; actual: True». Из-за этого сбоя строки в массиве, расположенные после слова «Error», не проверялись. Test Explorer window showing the IsFalse assertion failure
  • Удалите строку «Error», которую вы добавили на шаге 1. Еще раз запустите тест. Теперь тесты будут пройдены.
  • Тестирование версии выпуска для библиотеки

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

    Протестируйте сборку выпуска следующим образом.

    1. В панели инструментов Visual Studio измените конфигурацию сборки с режима Отладка на Выпуск. Visual Studio toolbar with release build highlighted
    2. В обозревателе решений щелкните проект StringLibrary правой кнопкой мыши и выберите в контекстном меню пункт Сборка, чтобы выполнить повторную компиляцию библиотеки. StringLibrary context menu with build command
    3. Запустите модульные тесты, выбрав «Тест >запустить все тесты» в строке меню. Все тесты будут пройдены.

    Отладка тестов

    Если вы используете Visual Studio в качестве интегрированной среды разработки, можно использовать тот же процесс, что и в руководстве. Отладка консольного приложения .NET с помощью Visual Studio для отладки кода с помощью проекта модульного теста. Вместо запуска проекта приложения ShowCase щелкните правой кнопкой проект StringLibraryTests и выберите элемент Отладка тестов в контекстном меню.

    Visual Studio запускает тестовый проект с присоединенным отладчиком. Выполнение будет прервано в любой точке останова, добавленной в тестовый проект или базовый код библиотеки.

    Дополнительные ресурсы

    • Основные сведения о модульных тестах
    • Модульное тестирование в .NET

    Далее

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

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

    Библиотеку не нужно распространять как пакет. Ее можно объединить с консольным приложением, где она используется. Чтобы узнать, как опубликовать консольное приложение, ознакомьтесь с предыдущим руководством в этой серии:

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

    Предварительные условия

    • В этом руководстве используется решение, созданное при работе со статьей Создание библиотеки классов .NET в Visual Studio.

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

    Модульные тесты обеспечивают автоматическое тестирование программного обеспечения во время разработки и публикации. MSTest — это одна из трех доступных для выбора платформ тестирования. Другими являются xUnit и nUnit.

    1. Запустите среду Visual Studio.
    2. Откройте решение ClassLibraryProjects , созданное при работе со статьей Создание библиотеки классов .NET в Visual Studio.
    3. Добавьте в решение новый проект модульного теста с именем StringLibraryTest.
      1. Щелкните решение в обозревателе решений правой кнопкой мыши и выберите Добавить>Новый проект.
      2. На странице Добавить новый проект введите в поле поиска mstest. Выберите C# или Visual Basic из списка языков, а затем — Все платформы из списка платформ.
      3. Выберите шаблон Тестовый проект MSTest и щелкните Далее.
      4. На странице Настроить новый проект введите StringLibraryTest в поле Имя проекта. Теперь щелкните Далее.
      5. На странице «Дополнительные сведения» выберите .NET 7 (поддержка со стандартным термином) в поле Framework. Щелкните Создать.
      using Microsoft.VisualStudio.TestTools.UnitTesting; namespace StringLibraryTest < [TestClass] public class UnitTest1 < [TestMethod] public void TestMethod1() < >> > 
      Imports Microsoft.VisualStudio.TestTools.UnitTesting Namespace StringLibraryTest Public Class UnitTest1 Sub TestSub() End Sub End Class End Namespace 
      • Он импортирует пространство имен Microsoft.VisualStudio.TestTools.UnitTesting, которое содержит типы, используемые для модульного тестирования.
      • Он применяет атрибут TestClassAttribute к классу UnitTest1 .
      • Он применяет атрибут TestMethodAttribute для определения TestMethod1 в C# или TestSub в Visual Basic.

      При запуске модульного теста автоматически выполняются все методы теста, помеченные атрибутом [TestMethod], в тестовом классе, помеченном атрибутом [TestClass].

      Добавление ссылки на проект

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

      1. В обозревателе решений правой кнопкой мыши щелкните узел Зависимости в проекте StringLibraryTest и в контекстном меню выберите пункт Добавить ссылку на проект.
      2. В диалоговом окне Диспетчер ссылок разверните узел Проекты и установите флажок рядом с пунктом StringLibrary. Добавление ссылки на сборку StringLibrary позволяет компилятору находить методы StringLibrary во время компиляции проекта StringLibraryTest.
      3. Нажмите ОК.

      Добавление и выполнение методов модульного теста

      При запуске модульного теста Visual Studio выполняет каждый метод, помеченный TestMethodAttribute атрибутом в классе, помеченном атрибутом TestClassAttribute . Метод теста завершается, когда происходит первый сбой или когда все тесты, содержащиеся в методе, будут успешно выполнены.

      В самых распространенных тестах вызываются члены класса Assert. Многие методы утверждения (Assert) принимают по крайней мере два параметра, из которых один представляет ожидаемый результат теста, а второй — фактический результат теста. Наиболее популярные из этих методов класса Assert перечислены в следующей таблице:

      Методы утверждения Функция
      Assert.AreEqual Проверяет равенство двух значений или объектов. Утверждение не выполняется, если значения или объекты не равны.
      Assert.AreSame Проверяет, что две объектные переменные ссылаются на один и тот же объект. Утверждение не выполняется, если переменные ссылаются на разные объекты.
      Assert.IsFalse Проверяет, что условие имеет значение false . Утверждение не выполняется, если условие имеет значение true .
      Assert.IsNotNull Проверяет, что объект не имеет значение null . Утверждение не выполняется, если объект является null .

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

      Для тестирования метода StringLibrary.StartsWithUpper необходимо предоставить несколько строк, которые начинаются с символов верхнего регистра. Предполагается, что в этих случаях метод возвратит true , поэтому можно вызвать метод Assert.IsTrue. Представьте также несколько строк, которые не начинаются с символов верхнего регистра. Предполагается, что в этих случаях метод возвратит false , поэтому можно вызвать метод Assert.IsFalse.

      Так как ваш метод библиотеки обрабатывает строки, нам нужно проверить правильность обработки пустых строк ( String.Empty ) (так называется допустимая строка, которая не содержит символов и для которой свойство Length имеет значение 0) и строки null , которая не была инициализирована. Метод StartsWithUpper можно вызвать напрямую как статический метод и передать ему один аргумент типа String. Или метод StartsWithUpper можно вызвать как метод расширения для переменной string , которой назначено значение null .

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

      Создание методов теста:

        В окне кода UnitTest1.cs или UnitTest1.vb замените отображаемый код на следующий текст:

      using Microsoft.VisualStudio.TestTools.UnitTesting; using UtilityLibraries; namespace StringLibraryTest < [TestClass] public class UnitTest1 < [TestMethod] public void TestStartsWithUpper() < // Tests that we expect to return true. string[] words = < "Alphabet", "Zebra", "ABC", "Αθήνα", "Москва" >; foreach (var word in words) < bool result = word.StartsWithUpper(); Assert.IsTrue(result, string.Format("Expected for '': true; Actual: ", word, result)); > > [TestMethod] public void TestDoesNotStartWithUpper() < // Tests that we expect to return false. string[] words = < "alphabet", "zebra", "abc", "αυτοκινητοβιομηχανία", "государство", "1234", ".", ";", " " >; foreach (var word in words) < bool result = word.StartsWithUpper(); Assert.IsFalse(result, string.Format("Expected for '': false; Actual: ", word, result)); > > [TestMethod] public void DirectCallWithNullOrEmpty() < // Tests that we expect to return false. string?[] words = < string.Empty, null >; foreach (var word in words) < bool result = StringLibrary.StartsWithUpper(word); Assert.IsFalse(result, string.Format("Expected for '': false; Actual: ", word == null ? "" : word, result)); > > > > 
      Imports Microsoft.VisualStudio.TestTools.UnitTesting Imports UtilityLibraries Namespace StringLibraryTest Public Class UnitTest1 Public Sub TestStartsWithUpper() ' Tests that we expect to return true. Dim words() As String = For Each word In words Dim result As Boolean = word.StartsWithUpper() Assert.IsTrue(result, $"Expected for '': true; Actual: ") Next End Sub Public Sub TestDoesNotStartWithUpper() ' Tests that we expect to return false. Dim words() As String = For Each word In words Dim result As Boolean = word.StartsWithUpper() Assert.IsFalse(result, $"Expected for '': false; Actual: ") Next End Sub Public Sub DirectCallWithNullOrEmpty() ' Tests that we expect to return false. Dim words() As String = For Each word In words Dim result As Boolean = StringLibrary.StartsWithUpper(word) Assert.IsFalse(result, $"Expected for '", word)>': false; Actual: ") Next End Sub End Class End Namespace 

      Тест на символы верхнего регистра в методе TestStartsWithUpper включает заглавную греческую букву «альфа» (U+0391) и заглавную кириллическую букву «М» (U+041C). Тест на символы нижнего регистра в методе TestDoesNotStartWithUpper включает строчную греческую букву «альфа» (U+03B1) и строчную кириллическую букву «г» (U+0433).

    4. В строке меню выберите Файл>Сохранить UnitTest1.cs как или Файл>Сохранить UnitTest1.vb как. В диалоговом окне Сохранить файл как щелкните стрелку рядом с кнопкой Сохранить и выберите вариант Сохранить с кодировкой. Visual Studio Save File As dialog
    5. В диалоговом окне Подтверждение сохранения нажмите кнопку Да, чтобы сохранить файл.
    6. В диалоговом окне Дополнительные параметры сохранения выберите в раскрывающемся списка Кодировка вариант Юникод (UTF-8, с сигнатурой), кодовая страница 65001 и нажмите кнопку ОК. Visual Studio Advanced Save Options dialogЕсли вы не сохраните исходный код в кодировке UTF8, Visual Studio может сохранить его как файл ASCII. В этом случае среде выполнения не удастся правильно раскодировать символы UTF8 за пределами стандартного диапазона ASCII, и результаты теста будут неправильными.
    7. В строке меню выберите Тест>Выполнить все тесты. Если окно обозревателя тестов не открыто, откройте его, выбрав Тест>Обозреватель тестов. В разделе Пройденные тесты перечислены три теста, а раздел Сводка содержит результат тестового запуска. Test Explorer window with passing tests

    Обработка сбоев теста

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

      Измените массив words в методе TestDoesNotStartWithUpper , включив в него строку «Error». Сохранять файл не требуется, поскольку при сборке решения для выполнения тестов Visual Studio автоматически сохраняет открытые файлы.

    string[] words = < "alphabet", "Error", "zebra", "abc", "αυτοκινητοβιομηχανία", "государство", "1234", ".", ";", " " >; 
    Dim words() As String =
  • Выполните тест, последовательно выбрав в строке меню пункты Тест>Выполнить все тесты. В окне Обозреватель тестов будет указано, что два теста выполнены успешно, а третий завершился ошибкой. Test Explorer window with failing tests
  • Выберите непройденный тест TestDoesNotStartWith . В окне Обозреватель тестов появится сообщение, созданное методом утверждения: «Assert.IsFalse failed. Expected for ‘Error’: false; actual: True». Из-за этого сбоя строки в массиве, расположенные после слова «Error», не проверялись. Test Explorer window showing the IsFalse assertion failure
  • Удалите строку «Error», которую вы добавили на шаге 1. Еще раз запустите тест. Теперь тесты будут пройдены.
  • Тестирование версии выпуска для библиотеки

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

    Протестируйте сборку выпуска следующим образом.

    1. В панели инструментов Visual Studio измените конфигурацию сборки с режима Отладка на Выпуск. Visual Studio toolbar with release build highlighted
    2. В обозревателе решений щелкните проект StringLibrary правой кнопкой мыши и выберите в контекстном меню пункт Сборка, чтобы выполнить повторную компиляцию библиотеки. StringLibrary context menu with build command
    3. Запустите модульные тесты, выбрав «Тест >запустить все тесты» в строке меню. Все тесты будут пройдены.

    Отладка тестов

    Если вы используете Visual Studio в качестве интегрированной среды разработки, можно использовать тот же процесс, что и в руководстве. Отладка консольного приложения .NET с помощью Visual Studio для отладки кода с помощью проекта модульного теста. Вместо запуска проекта приложения ShowCase щелкните правой кнопкой проект StringLibraryTests и выберите элемент Отладка тестов в контекстном меню.

    Visual Studio запускает тестовый проект с присоединенным отладчиком. Выполнение будет прервано в любой точке останова, добавленной в тестовый проект или базовый код библиотеки.

    Дополнительные ресурсы

    • Основные сведения о модульных тестах
    • Модульное тестирование в .NET

    Далее

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

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

    Библиотеку не нужно распространять как пакет. Ее можно объединить с консольным приложением, где она используется. Чтобы узнать, как опубликовать консольное приложение, ознакомьтесь с предыдущим руководством в этой серии:

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

    Предварительные условия

    • В этом руководстве используется решение, созданное при работе со статьей Создание библиотеки классов .NET в Visual Studio.

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

    Модульные тесты обеспечивают автоматическое тестирование программного обеспечения во время разработки и публикации. MSTest — это одна из трех доступных для выбора платформ тестирования. Другими являются xUnit и nUnit.

    1. Запустите среду Visual Studio.
    2. Откройте решение ClassLibraryProjects , созданное при работе со статьей Создание библиотеки классов .NET в Visual Studio.
    3. Добавьте в решение новый проект модульного теста с именем StringLibraryTest.
      1. Щелкните решение в обозревателе решений правой кнопкой мыши и выберите Добавить>Новый проект.
      2. На странице Добавить новый проект введите в поле поиска mstest. Выберите C# или Visual Basic из списка языков, а затем — Все платформы из списка платформ.
      3. Выберите шаблон Тестовый проект MSTest и щелкните Далее.
      4. На странице Настроить новый проект введите StringLibraryTest в поле Имя проекта. Теперь щелкните Далее.
      5. На странице Дополнительные сведения выберите .NET 6 (долгосрочная поддержка) в поле Платформа. Щелкните Создать.
      using Microsoft.VisualStudio.TestTools.UnitTesting; namespace StringLibraryTest < [TestClass] public class UnitTest1 < [TestMethod] public void TestMethod1() < >> > 
      Imports Microsoft.VisualStudio.TestTools.UnitTesting Namespace StringLibraryTest Public Class UnitTest1 Sub TestSub() End Sub End Class End Namespace 
      • Он импортирует пространство имен Microsoft.VisualStudio.TestTools.UnitTesting, которое содержит типы, используемые для модульного тестирования.
      • Он применяет атрибут TestClassAttribute к классу UnitTest1 .
      • Он применяет атрибут TestMethodAttribute для определения TestMethod1 в C# или TestSub в Visual Basic.

      При запуске модульного теста автоматически выполняются все методы теста, помеченные атрибутом [TestMethod], в тестовом классе, помеченном атрибутом [TestClass].

      Добавление ссылки на проект

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

      1. В обозревателе решений правой кнопкой мыши щелкните узел Зависимости в проекте StringLibraryTest и в контекстном меню выберите пункт Добавить ссылку на проект.
      2. В диалоговом окне Диспетчер ссылок разверните узел Проекты и установите флажок рядом с пунктом StringLibrary. Добавление ссылки на сборку StringLibrary позволяет компилятору находить методы StringLibrary во время компиляции проекта StringLibraryTest.
      3. Нажмите ОК.

      Добавление и выполнение методов модульного теста

      При запуске модульного теста Visual Studio выполняет каждый метод, помеченный TestMethodAttribute атрибутом в классе, помеченном атрибутом TestClassAttribute . Метод теста завершается, когда происходит первый сбой или когда все тесты, содержащиеся в методе, будут успешно выполнены.

      В самых распространенных тестах вызываются члены класса Assert. Многие методы утверждения (Assert) принимают по крайней мере два параметра, из которых один представляет ожидаемый результат теста, а второй — фактический результат теста. Наиболее популярные из этих методов класса Assert перечислены в следующей таблице:

      Методы утверждения Функция
      Assert.AreEqual Проверяет равенство двух значений или объектов. Утверждение не выполняется, если значения или объекты не равны.
      Assert.AreSame Проверяет, что две объектные переменные ссылаются на один и тот же объект. Утверждение не выполняется, если переменные ссылаются на разные объекты.
      Assert.IsFalse Проверяет, что условие имеет значение false . Утверждение не выполняется, если условие имеет значение true .
      Assert.IsNotNull Проверяет, что объект не имеет значение null . Утверждение не выполняется, если объект является null .

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

      Для тестирования метода StringLibrary.StartsWithUpper необходимо предоставить несколько строк, которые начинаются с символов верхнего регистра. Предполагается, что в этих случаях метод возвратит true , поэтому можно вызвать метод Assert.IsTrue. Представьте также несколько строк, которые не начинаются с символов верхнего регистра. Предполагается, что в этих случаях метод возвратит false , поэтому можно вызвать метод Assert.IsFalse.

      Так как ваш метод библиотеки обрабатывает строки, нам нужно проверить правильность обработки пустых строк ( String.Empty ) (так называется допустимая строка, которая не содержит символов и для которой свойство Length имеет значение 0) и строки null , которая не была инициализирована. Метод StartsWithUpper можно вызвать напрямую как статический метод и передать ему один аргумент типа String. Или метод StartsWithUpper можно вызвать как метод расширения для переменной string , которой назначено значение null .

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

      Создание методов теста:

        В окне кода UnitTest1.cs или UnitTest1.vb замените отображаемый код на следующий текст:

      using Microsoft.VisualStudio.TestTools.UnitTesting; using UtilityLibraries; namespace StringLibraryTest < [TestClass] public class UnitTest1 < [TestMethod] public void TestStartsWithUpper() < // Tests that we expect to return true. string[] words = < "Alphabet", "Zebra", "ABC", "Αθήνα", "Москва" >; foreach (var word in words) < bool result = word.StartsWithUpper(); Assert.IsTrue(result, string.Format("Expected for '': true; Actual: ", word, result)); > > [TestMethod] public void TestDoesNotStartWithUpper() < // Tests that we expect to return false. string[] words = < "alphabet", "zebra", "abc", "αυτοκινητοβιομηχανία", "государство", "1234", ".", ";", " " >; foreach (var word in words) < bool result = word.StartsWithUpper(); Assert.IsFalse(result, string.Format("Expected for '': false; Actual: ", word, result)); > > [TestMethod] public void DirectCallWithNullOrEmpty() < // Tests that we expect to return false. string?[] words = < string.Empty, null >; foreach (var word in words) < bool result = StringLibrary.StartsWithUpper(word); Assert.IsFalse(result, string.Format("Expected for '': false; Actual: ", word == null ? "" : word, result)); > > > > 
      Imports Microsoft.VisualStudio.TestTools.UnitTesting Imports UtilityLibraries Namespace StringLibraryTest Public Class UnitTest1 Public Sub TestStartsWithUpper() ' Tests that we expect to return true. Dim words() As String = For Each word In words Dim result As Boolean = word.StartsWithUpper() Assert.IsTrue(result, $"Expected for '': true; Actual: ") Next End Sub Public Sub TestDoesNotStartWithUpper() ' Tests that we expect to return false. Dim words() As String = For Each word In words Dim result As Boolean = word.StartsWithUpper() Assert.IsFalse(result, $"Expected for '': false; Actual: ") Next End Sub Public Sub DirectCallWithNullOrEmpty() ' Tests that we expect to return false. Dim words() As String = For Each word In words Dim result As Boolean = StringLibrary.StartsWithUpper(word) Assert.IsFalse(result, $"Expected for '", word)>': false; Actual: ") Next End Sub End Class End Namespace 

      Тест на символы верхнего регистра в методе TestStartsWithUpper включает заглавную греческую букву «альфа» (U+0391) и заглавную кириллическую букву «М» (U+041C). Тест на символы нижнего регистра в методе TestDoesNotStartWithUpper включает строчную греческую букву «альфа» (U+03B1) и строчную кириллическую букву «г» (U+0433).

    4. В строке меню выберите Файл>Сохранить UnitTest1.cs как или Файл>Сохранить UnitTest1.vb как. В диалоговом окне Сохранить файл как щелкните стрелку рядом с кнопкой Сохранить и выберите вариант Сохранить с кодировкой. Visual Studio Save File As dialog
    5. В диалоговом окне Подтверждение сохранения нажмите кнопку Да, чтобы сохранить файл.
    6. В диалоговом окне Дополнительные параметры сохранения выберите в раскрывающемся списка Кодировка вариант Юникод (UTF-8, с сигнатурой), кодовая страница 65001 и нажмите кнопку ОК. Visual Studio Advanced Save Options dialogЕсли вы не сохраните исходный код в кодировке UTF8, Visual Studio может сохранить его как файл ASCII. В этом случае среде выполнения не удастся правильно раскодировать символы UTF8 за пределами стандартного диапазона ASCII, и результаты теста будут неправильными.
    7. В строке меню выберите Тест>Выполнить все тесты. Если окно обозревателя тестов не открыто, откройте его, выбрав Тест>Обозреватель тестов. В разделе Пройденные тесты перечислены три теста, а раздел Сводка содержит результат тестового запуска. Test Explorer window with passing tests

    Обработка сбоев теста

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

      Измените массив words в методе TestDoesNotStartWithUpper , включив в него строку «Error». Сохранять файл не требуется, поскольку при сборке решения для выполнения тестов Visual Studio автоматически сохраняет открытые файлы.

    string[] words = < "alphabet", "Error", "zebra", "abc", "αυτοκινητοβιομηχανία", "государство", "1234", ".", ";", " " >; 
    Dim words() As String =
  • Выполните тест, последовательно выбрав в строке меню пункты Тест>Выполнить все тесты. В окне Обозреватель тестов будет указано, что два теста выполнены успешно, а третий завершился ошибкой. Test Explorer window with failing tests
  • Выберите непройденный тест TestDoesNotStartWith . В окне Обозреватель тестов появится сообщение, созданное методом утверждения: «Assert.IsFalse failed. Expected for ‘Error’: false; actual: True». Из-за этого сбоя строки в массиве, расположенные после слова «Error», не проверялись. Test Explorer window showing the IsFalse assertion failure
  • Удалите строку «Error», которую вы добавили на шаге 1. Еще раз запустите тест. Теперь тесты будут пройдены.
  • Тестирование версии выпуска для библиотеки

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

    Протестируйте сборку выпуска следующим образом.

    1. В панели инструментов Visual Studio измените конфигурацию сборки с режима Отладка на Выпуск. Visual Studio toolbar with release build highlighted
    2. В обозревателе решений щелкните проект StringLibrary правой кнопкой мыши и выберите в контекстном меню пункт Сборка, чтобы выполнить повторную компиляцию библиотеки. StringLibrary context menu with build command
    3. Запустите модульные тесты, выбрав «Тест >запустить все тесты» в строке меню. Все тесты будут пройдены.

    Отладка тестов

    Если вы используете Visual Studio в качестве интегрированной среды разработки, можно использовать тот же процесс, что и в руководстве. Отладка консольного приложения .NET с помощью Visual Studio для отладки кода с помощью проекта модульного теста. Вместо запуска проекта приложения ShowCase щелкните правой кнопкой проект StringLibraryTests и выберите элемент Отладка тестов в контекстном меню.

    Visual Studio запускает тестовый проект с присоединенным отладчиком. Выполнение будет прервано в любой точке останова, добавленной в тестовый проект или базовый код библиотеки.

    Дополнительные ресурсы

    • Основные сведения о модульных тестах
    • Модульное тестирование в .NET

    Далее

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

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

    Библиотеку не нужно распространять как пакет. Ее можно объединить с консольным приложением, где она используется. Чтобы узнать, как опубликовать консольное приложение, ознакомьтесь с предыдущим руководством в этой серии:

    Совместная работа с нами на GitHub

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

    The .NET documentation is open source. Provide feedback here.

    Обратная связь

    Отправить и просмотреть отзыв по

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *