Visual Studio Code 中“在上下文中运行测试”和“在上下文中调试测试”和“在上下文中运行 .NET Core 测试”的“上下文”是什么?

问题描述

在 Visual Studio Code 中,我真的对 3 个“上下文”菜单项感到困惑:Run Tests in ContextDebug Tests in ContextRun .NET Core Test in context,他们期望什么 Context

enter image description here

据我所知,TestContext 将通过 .runsettings 初始化,但我永远无法通过 runsettingsContext 中从 VS 代码进行调试/运行测试。

    [ClassInitialize]
    public static new void ClassInitialize(TestContext testContext)
    {
        //testContext doesn't get setting from `.runsettings`
        ...
        BaseTest.ClassInitialize(testContext);
    }

我认为以下 Debug TestDebug Tests in Context 不同?因为跟随 Run Test 可以加载 runsettings,但 Debug Test 不起作用。

enter image description here

以上 Run Test 使用以下设置:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <RunSettingsFilePath>$(MSBuildProjectDirectory)\example.runsettings</RunSettingsFilePath>
  </PropertyGroup>
  ...
</Project>

我的测试在 Visual Studio 2019 中运行良好,但在加载 .runsettings 时卡在 VS Code 中。

欲知更多详情:

这是我的文件夹结构:

enter image description here

这是 workspace.code-workspace内容dotnet-test-explorer 可以很好地加载所有测试:

{
    "folders": [
        {
            "path": ".."
        }
    ],"settings": {
        "dotnet-test-explorer.testArguments": "--settings c:/src/pat-oas/.runsettings","dotnet-test-explorer.testProjectPath": "./tests/Pat.UITests.Itrds/Pat.UITests.Itrds.csproj"
    }
}

解决方法

在上下文中运行或调试测试是 Visual Studio 的一项功能,可让您从光标所在的位置运行测试。它将运行从光标所在位置开始的第一个测试,或文件中的所有测试。

对于 vscode,开始查找测试的上下文是您右键单击的位置。它只是比滚动到 codelens 或在扩展测试运行器中查找测试更容易。

runsettings 是一项 omnisharp 功能,您必须在 omnisharp.testRunSettings 下设置文件路径。这是相关的 PR https://github.com/OmniSharp/omnisharp-vscode/pull/3573

.Net Core run test in context 可能由您使用的扩展测试运行程序提供。

您可以在此处查看此答案中的图表https://stackoverflow.com/a/42881612