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

动态测试发现

测试资源管理器(Test Explorer)未发现动态定义的测试(例如,理论、自定义适配器、自定义属性和 #ifdef 语句)。 如何确保它发现这些测试?

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

实时测试发现 是基于源的测试发现。 它无法发现使用理论、自定义适配器、自定义特征、#ifdef 语句等的测试,因为它们是在运行时定义的。 需要进行生成才能准确发现此类测试。

在 Visual Studio 2017 版本 15.6 及更高版本中,基于程序集的发现(传统发现器)仅在生成后运行。 此设置意味着实时测试发现可在你编辑时找到尽可能多的测试。 基于程序集的发现允许在生成后显示动态定义的测试。

实时测试发现可提高响应能力,但仍允许在生成后获得完整和精确的结果。

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

测试资源管理器顶部显示加号的含义是什么?

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

显示加号的摘要行的屏幕截图。

实时测试发现

在我键入时,测试现在会显示在测试资源管理器中,而无需我生成我的项目。 发生了什么变化?

此功能称为实时测试发现。 它使用 Roslyn 分析器实时查找测试和填充测试资源管理器,而无需生成项目。 有关动态定义的测试(如理论或自定义特征)的测试发现行为的详细信息,请参阅本文前面的 动态测试发现

实时测试发现兼容性

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

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

Test Explorer 日志

如何为测试资源管理器启用日志?

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

UWP 测试发现

为什么我的 UWP 项目中的测试只在我部署应用后才被发现?

部署应用时,通用 Windows 平台(UWP)测试面向不同的运行时。 若要准确查找 UWP 项目的测试,不仅需要生成项目,还需要部署它。

测试浏览器排序

排序测试结果在层次结构视图中的工作原理?

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

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

在层次结构视图中,父节点分组旁有通过、失败、跳过和未运行的图标。 这些图标的含义是什么?

Project旁的图标、命名空间 分组显示每个分组中的测试状态。 请参阅下表。

“测试资源管理器”层次结构图标的表。

按文件路径搜索

为什么在“测试资源管理器”搜索框中不再存在文件路径筛选器?

在 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 中使用预览功能?

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