Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Вы можете создавать и запускать модульные тесты в Visual Studio с помощью некоторых из более популярных платформ JavaScript без необходимости переключиться в командную строку. Поддерживаются как Node.js, так и ASP.NET основные проекты.
Поддерживаемые платформы:
- Mocha (mochajs.org)
- Jasmine (Jasmine.github.io)
- Лента (github.com/substack/tape)
- Jest (jestjs.io)
- Vitest (vitest.dev)
Написание модульных тестов для проекта на основе ИНТЕРФЕЙСА командной строки (.esproj)
Проекты на основе интерфейса командной строки, поддерживаемые в Visual Studio 2022, работают с обозревателем тестов. Vitest — это встроенная тестовая платформа для проектов React и Vue (ранее Jest), а Карма и Jasmine используются для проектов Angular. По умолчанию вы сможете выполнять тесты по умолчанию, предоставляемые каждой платформой, а также любые дополнительные тесты, которые вы пишете. Просто нажмите кнопку "Запустить " в обозревателе тестов. Если у вас еще нет открытого обозревателя тестов, его можно найти, выбравобозреватель тестов> в строке меню.
Чтобы запустить модульные тесты из командной строки, щелкните правой кнопкой мыши проект в обозревателе решений, выберите "Открыть в терминале" и выполните команду, определенную для типа теста.
Дополнительные сведения о настройке модульных тестов см. в следующих статьях:
- Тестирование с помощью Vitest
- Тестирование React с помощью Jest
- Тестирование Angular
- Тестирование Vue.js
Здесь также приведен простой пример. Однако используйте приведенные выше ссылки для получения полных сведений.
Добавление модульного теста (.esproj)
Следующий пример основан на шаблоне проекта TypeScript React, предоставленном в Visual Studio 2022 версии 17.12 или более поздней версии, который является шаблоном автономного проекта TypeScript React . Для Vue и Angular шаги аналогичны.
В обозревателе решений щелкните проект React правой кнопкой мыши и выберите "Изменить файл проекта".
Убедитесь, что следующие свойства присутствуют в файле esproj со значениями, отображаемыми.
<PropertyGroup> <JavaScriptTestRoot>src\</JavaScriptTestRoot> <JavaScriptTestFramework>Vitest</JavaScriptTestFramework> </PropertyGroup>В этом примере указывается Vitest в качестве тестовой платформы. Вместо этого можно указать Mocha, Tape, Jasmine или Jest.
Элемент
JavaScriptTestRootуказывает, что модульные тесты будут находиться в папке src корневого каталога проекта. Кроме того, обычно указывается тестовая папка.В обозревателе решений щелкните правой кнопкой мыши узел npm и выберите "Установить новые пакеты npm".
Используйте диалоговое окно установки пакета npm, чтобы установить следующие пакеты npm:
- vitest
Этот пакет добавляется в файл package.json в зависимости.
Замечание
Если вы используете jest, пакет npm поддержки jest-editor-support требуется, а также пакет jest.
В package.jsonдобавьте
testраздел в концеscriptsраздела:"scripts": { ... "test": "vitest" },В обозревателе решений щелкните правой кнопкой мыши папку src и выберите команду "Добавить>новый элемент", а затем добавьте новый файл с именем App.test.tsx.
При этом новый файл добавляется в папку src.
Добавьте следующий код в App.test.tsx.
import { describe, it, expect } from 'vitest'; describe('testAsuite', () => { it('testA1', async () => { expect(2).toBe(2); }); });Откройте обозреватель тестов (выберите>обозреватель тестов) и Visual Studio обнаруживает и отображает тесты. Если тесты не отображаются изначально, перестройте проект, чтобы обновить список.
Замечание
Для TypeScript не используйте
outfileпараметр в tsconfig.json, так как обозреватель тестов не сможет найти модульные тесты. Этот параметр можно использоватьoutdir, но убедитесь, что файлы конфигурации, такие какpackage.jsonиtsconfig.jsonнаходятся в корневом каталоге проекта.Это важно
Если выходные данные тестов в окне вывода отображают ошибку
ReadOnlySpanво время обнаружения тестов, используйте следующее решение для известной проблемы MSBuild. Для <, откройте папку <, и переименуйте System.Memory.dll в другое название. Это исправление включает обнаружение тестов.
Выполнение тестов (.esproj)
Вы можете выполнить тесты, щелкнув ссылку "Выполнить все " в обозревателе тестов. Кроме того, можно выполнить тесты, выбрав один или несколько тестов или групп, щелкнув правой кнопкой мыши и выбрав команду "Выполнить " в контекстном меню. Тесты выполняются в фоновом режиме и обозревателе тестов автоматически обновляются и отображают результаты. Кроме того, можно также выполнить отладку выбранных тестов, щелкнув правой кнопкой мыши и выбрав "Отладка".
На следующем рисунке показан пример с добавленным вторым модульным тестом.
Для некоторых платформ модульных тестов модульные тесты обычно выполняются в созданном коде JavaScript.
Замечание
В большинстве сценариев TypeScript можно выполнить отладку модульного теста, установив точку останова в коде TypeScript, щелкнув правой кнопкой мыши тест в обозревателе тестов и выбрав "Отладка". В более сложных сценариях, таких как некоторые сценарии, использующие исходные карты, в коде TypeScript могут возникнуть трудности при достижении точек останова. В качестве обходного решения попробуйте использовать ключевое debugger слово.
Замечание
Тесты профилирования и покрытие кода в настоящее время не поддерживаются.
Запуск модульных тестов в консоли для проекта на основе командной строки (.esproj)
Модульные тесты можно запускать непосредственно из командной строки для платформы модульных тестов так же, как и в случае, если вы не использовали Visual Studio.
Вы также можете запустить тесты из командной строки с помощью vstest.console. Например, можно использовать vstest.console для поддержания согласованности с модульными тестами C# или для запуска в Azure DevOps. Используйте следующую команду, но замените MyProj именем вашего проекта.
vstest.console .\MyProj.esproj /TestAdapterPath:"C:\Program Files\Microsoft Visual Studio\18\Enterprise\Common7\IDE\Extensions\Microsoft\JavaScript"
vstest.console .\MyProj.esproj /TestAdapterPath:"C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\Extensions\Microsoft\JavaScript"
Написание модульных тестов для ASP.NET Core
Чтобы добавить поддержку модульного тестирования JavaScript и TypeScript в проекте ASP.NET Core, необходимо добавить поддержку TypeScript, npm и модульного тестирования в проект, включая необходимые пакеты NuGet.
Добавление модульного теста (ASP.NET Core)
Следующий пример основан на шаблоне проекта ASP.NET Core Model-View-Controller и включает добавление модульного теста Jest или Mocha.
Создайте проект ASP.NET Core Model-View-Controller.
Пример проекта см. в разделе "Добавление TypeScript" в существующее приложение ASP.NET Core. Для поддержки модульного тестирования рекомендуется начать с стандартного шаблона проекта ASP.NET Core.
В обозревателе решений (справа) щелкните правой кнопкой мыши узел проекта ASP.NET Core и выберите пункт "Управление пакетами NuGet для решений".
На вкладке "Обзор" найдите следующие пакеты и установите каждый из них:
Используйте пакет NuGet для добавления поддержки TypeScript вместо пакета npm TypeScript.
В обозревателе решений щелкните правой кнопкой мыши узел проекта и выберите пункт "Изменить файл проекта".
Csproj-файл открывается в Visual Studio.
Добавьте следующие элементы в CSPROJ-файл в
PropertyGroupэлемент.В этом примере указывается Jest или Mocha в качестве тестовой платформы. Вместо этого можно указать Ленту или Jasmine.
Элемент
JavaScriptTestRootуказывает, что модульные тесты будут находиться в папке тестов корневого каталога проекта.<PropertyGroup> ... <JavaScriptTestRoot>tests\</JavaScriptTestRoot> <JavaScriptTestFramework>Jest</JavaScriptTestFramework> <GenerateProgramFile>false</GenerateProgramFile> </PropertyGroup>В обозревателе решений щелкните правой кнопкой мыши узел проекта ASP.NET Core и выберите "Добавить > новый элемент". Выберите файл конфигурации JSON TypeScript, а затем выберите Добавить.
Если вы не видите все шаблоны элементов, выберите показать все шаблоны, а затем выберите шаблон элемента.
Visual Studio добавляет файл tsconfig.json в корневой каталог проекта. Этот файл можно использовать для настройки параметров компилятора TypeScript.
Откройте tsconfig.json и замените код по умолчанию следующим кодом:
{ "compileOnSave": true, "compilerOptions": { "noImplicitAny": false, "noEmitOnError": true, "removeComments": false, "sourceMap": true, "target": "es5", "outDir": "wwwroot/js" }, "include": [ "scripts/**/*" ], "exclude": [ "node_modules", "tests" ] }Для Jest, если вы хотите скомпилировать тесты TypeScript в JavaScript, удалите папку тестов из раздела исключения .
Папка скриптов — это место, где можно поместить код TypeScript для приложения. Пример проекта, добавляющего код, см. в разделе "Добавление TypeScript" в существующее приложение ASP.NET Core.
Щелкните проект правой кнопкой мыши в обозревателе решений и выберите команду "Добавить>новый элемент " (или нажмите клавиши CTRL + SHIFT + A). Используйте поле поиска, чтобы найти файл npm, выберите файл конфигурации npm, используйте имя по умолчанию и нажмите кнопку "Добавить".
Файл package.json добавляется в корневой каталог проекта.
В обозревателе решений щелкните правой кнопкой мыши узел npm в разделе "Зависимости" и выберите " Установить новые пакеты npm".
Замечание
В некоторых сценариях обозреватель решений может не отображать узел npm из-за известной проблемы, описанной здесь. Если нужно просмотреть узел npm, вы можете выгрузить проект (щелкните проект правой кнопкой мыши и выберите " Выгрузить проект") и перезагрузите проект, чтобы сделать узел npm повторно отображаемым. Кроме того, можно добавить записи пакета в package.json и установить, создав проект.
Используйте диалоговое окно установки пакета npm, чтобы установить следующие пакеты npm:
В package.jsonдобавьте
testраздел в концеscriptsраздела:В обозревателе решений щелкните правой кнопкой мыши тестовую папку и выберите команду "Добавить>новый элемент", а затем добавьте новый файл с именем App.test.tsx.
При этом новый файл добавляется в тестовую папку.
Добавьте следующий код в App.test.tsx.
Откройте обозреватель тестов (выберите>обозреватель тестов>) и Visual Studio обнаруживает и отображает тесты. Если тесты не отображаются изначально, перестройте проект, чтобы обновить список. На следующем рисунке показан пример Jest с двумя разными файлами модульного теста.
Замечание
Для TypeScript не используйте
outfileпараметр в tsconfig.json, так как обозреватель тестов не сможет найти модульные тесты. Этот параметр можно использоватьoutdir, но убедитесь, что файлы конфигурации, такие какpackage.jsonиtsconfig.jsonнаходятся в корневом каталоге проекта.Это важно
Если выходные данные тестов в окне вывода отображают ошибку
ReadOnlySpanво время обнаружения тестов, используйте следующее решение для известной проблемы MSBuild. В Visual Studio 2022 откройте папку Program Files\Microsoft Visual Studio\2022\<version>\Common7\IDE\Extensions\TestPlatform и переименуйте System.Memory.dll в другое имя. Это исправление включает обнаружение тестов.
Выполнение тестов (ASP.NET Core)
Вы можете выполнить тесты, щелкнув ссылку "Выполнить все " в обозревателе тестов. Кроме того, можно выполнить тесты, выбрав один или несколько тестов или групп, щелкнув правой кнопкой мыши и выбрав команду "Выполнить " в контекстном меню. Тесты выполняются в фоновом режиме и обозревателе тестов автоматически обновляются и отображают результаты. Кроме того, можно также выполнить отладку выбранных тестов, щелкнув правой кнопкой мыши и выбрав "Отладка".
На следующем рисунке показан пример Jest с добавленным вторым модульным тестом.
Для некоторых платформ модульных тестов модульные тесты обычно выполняются в созданном коде JavaScript.
Замечание
В большинстве сценариев TypeScript можно выполнить отладку модульного теста, установив точку останова в коде TypeScript, щелкнув правой кнопкой мыши тест в обозревателе тестов и выбрав "Отладка". В более сложных сценариях, таких как некоторые сценарии, использующие исходные карты, в коде TypeScript могут возникнуть трудности при достижении точек останова. В качестве обходного решения попробуйте использовать ключевое debugger слово.
Замечание
Тесты профилирования и покрытие кода в настоящее время не поддерживаются.