Visual Studio 测试资源管理器常见问题解答

动态测试发现

测试资源管理器未发现动态定义的测试。 (例如,理论、自定义适配器、自定义特征和 #ifdef 等)如何发现这些测试?

生成项目以运行基于程序集的发现。

实时测试发现是一种基于源的测试发现功能。 该功能无法发现使用理论、自定义适配器、自定义特征和 #ifdef 语句等的测试,因为这些项是在运行时定义的。 需要进行生成才能准确发现此类测试。 在 Visual Studio 2017 版本 15.6 及更高版本中,基于程序集的发现(传统发现)仅在生成后运行。 此设置意味着实时测试发现会在编辑时找到尽可能多的测试,并且通过基于程序集的发现可在生成之后显示动态定义的测试。 实时测试发现改进了响应能力,但仍可让你在生成后获取完整且准确的结果。

测试资源管理器加号 (+)

测试资源管理器首行中出现的加号 (+) 是什么意思?

加号 (+) 表示在运行基于程序集的发现时,生成后可能会发现更多测试。 如果在项目中检测到动态定义的测试,也会出现该符号。

Plus symbol summary line

实时测试发现

在我键入时,测试现在会显示在测试资源管理器中,而不必生成我的项目。 有何变化?

此功能称为实时测试发现。 它使用 Roslyn 分析器来发现测试并实时填充测试资源管理器,而无需你生成项目。 有关动态定义测试(如理论或自定义特征)的测试发现行为,请参阅动态测试发现

实时测试发现兼容性

哪些语言和测试框架可以使用实时测试发现?

由于实施测试发现是使用 Roslyn 编译器生成的,因此仅适用于托管语言(C# 和 Visual Basic)。 目前,实时测试发现仅适用于 xUnit、NUnit 和 MSTest 框架。

测试资源管理器日志

如何针对测试资源管理器打开日志?

导航到“工具”>“选项”>“测试”,并在此处找到“日志记录”部分 。

UWP 测试发现

为何在我部署应用之前,系统未发现 UWP 项目中的测试?

UWP 测试面向的是部署应用时的另一个运行时。 这表示,你需要生成项目,还需要进行部署,才能正确地发现用于 UWP 项目的测试。

测试资源管理器排序

如何在层次结构视图中进行测试结果排序?

层次结构视图按字母顺序对测试进行排序(与按结果排序相反)。 按设置划分的前一组已按结果对测试结果进行了排序,然后按字母进行了排序。 仍可通过以下方式启用按结果排序:右键单击“测试资源管理器”中的列标题,启用“状态”列,然后单击“状态”列标题即可对该列排序。 可通过此 GitHub 问题提供设计方面的反馈。

测试资源管理器层次结构视图

在层次结构视图中,父节点分组旁边有“已通过”、“失败”、“已跳过”和“未运行”图标。 这些图标代表什么?

“项目”、“命名空间”和“类”分组旁的图标显示该分组中的测试状态。 请参见下表。

Test Explorer Hierarchy Icons

按文件路径搜索

测试资源管理器搜索框中不再有“文件路径”筛选器。

Visual Studio 2017 版本 15.7 已删除“测试资源管理器”搜索框中的文件路径筛选器。 此功能的使用率较低,测试资源管理器省去此功能后可提升测试方法的检索速度。 如果此更改会中断你的开发流,请通过开发人员社区向我们提供反馈。

删除未记录的接口

Visual Studio 2019 中不再出现一些与测试相关的 API。 有何变化?

在 Visual Studio 2019 中,将删除以前标记为公开但从未正式记录过的某些测试窗口 API。 它们在 Visual Studio 2017 中被标记为“弃用”,提前通告扩展维护人员。 据我们所知,很少有扩展找过这些 API 并依赖于它们。 它们包括 IGroupByProviderIGroupByProvider<T>KeyComparerISearchFilterISearchFilterTokenISearchTokenSearchFilterTokenType。 若此更改影响了你的扩展,请在开发者社区上提交一个 bug 告知我们。

测试适配器 NuGet 引用

在 Visual Studio 2017 版本 15.8 中,发现了我的测试但不执行。

所有测试项目必须在其 csproj 中包含各自的 .NET 测试适配器 NuGet 引用。 如果未包含,在生成之后启动测试适配器扩展的发现或用户尝试运行所选测试时,项目中将显示以下测试输出:

测试项目 不引用任何 .NET NuGet 适配器。 测试发现或执行可能不适用于此项目。 建议在解决方案的每个 .NET 测试项目中引用 NuGet 测试适配器。

项目需要使用测试适配器 NuGet 包,而不使用测试适配器扩展。 该需求极大地提高了性能,并通过持续集成减少产生的问题。 阅读发行说明中有关 .NET 测试适配器扩展弃用的详细信息。

未找到 UWP TestContainer

我的 UWP 测试不再在 Visual Studio 2017 版本 15.7 及更高版本中执行。

最近的 UWP 测试项目指定了一个测试平台生成属性,通过它可提供更佳的测试应用识别性能。 如果具有在低于 Visual Studio 版本 15.7 的版本上初始化的 UWP 测试项目,可能会在“输出”>“测试”中看到该错误 :

System.AggregateException:发生一个或多个错误。 ---> System.InvalidOperationException: 在 {}Microsoft.VisualStudio.TestWindow.Controller.TestContainerProvider <GetTestContainerAsync>d__61.MoveNext() 中找不到以下 TestContainer

修复此错误的方法:

  • 使用以下代码更新测试项目生成属性:
<UnitTestPlatformVersion Condition="'$(UnitTestPlatformVersion)' == ''">$(VisualStudioVersion)</UnitTestPlatformVersion>
  • 使用以下代码更新 TestPlatform SDK 版本:
<SDKReference Include="TestPlatform.Universal, Version=$(UnitTestPlatformVersion)" />

使用预览功能

在 Visual Studio 2019 中,可以通过选择“工具”>“选项”>“环境”>“预览功能”使用预览功能。