Как запустить все тесты в 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": "${workspaceRoot}/test/MyProject.Tests",
  "externalConsole": false,
  "stopAtEntry": false,
  "internalConsoleOptions": "openOnSessionStart"
}

Ответ 1

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

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

tasks.json

{
  "version": "0.1.0",
  "command": "dotnet",
  "isShellCommand": true,
  "args": [],
  "tasks": [
    {
      "taskName": "build",
      "args": [ ],
      "isBuildCommand": true,
      "showOutput": "silent",
      "problemMatcher": "$msCompile"
    },
    {
      "taskName": "test",
      "args": [ ],
      "isTestCommand": true,
      "showOutput": "always",
      "problemMatcher": "$msCompile"
    }
  ]
}

Эти два определения задачи свяжут команды Запустить сборку и Запустить тестовую задачу в коде 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",
            "${workspaceFolder}/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).

{ "version": "2.0.0", "tasks": [ { "label": "test", "command": "dotnet test path/to/test-project.csproj", "type": "shell", "group": "test", "presentation": { "reveal": "silent" }, "problemMatcher": "$msCompile" } ] }