问题描述
在 Visual Studio Code 中,我真的对 3 个“上下文”菜单项感到困惑:Run Tests in Context
和 Debug Tests in Context
和 Run .NET Core Test in context
,他们期望什么 Context
?
据我所知,TestContext
将通过 .runsettings
初始化,但我永远无法通过 runsettings
在 Context
中从 VS 代码进行调试/运行测试。
[ClassInitialize]
public static new void ClassInitialize(TestContext testContext)
{
//testContext doesn't get setting from `.runsettings`
...
BaseTest.ClassInitialize(testContext);
}
我认为以下 Debug Test
与 Debug Tests in Context
不同?因为跟随 Run Test
可以加载 runsettings
,但 Debug Test
不起作用。
以上 Run Test
使用以下设置:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<RunSettingsFilePath>$(MSBuildProjectDirectory)\example.runsettings</RunSettingsFilePath>
</PropertyGroup>
...
</Project>
我的测试在 Visual Studio 2019 中运行良好,但在加载 .runsettings
时卡在 VS Code 中。
欲知更多详情:
这是我的文件夹结构:
这是 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