Visual Studio 中是否有单元测试的“动态播放列表”?

问题描述 投票:0回答:4

在 Visual Studio 中处理单元测试时,可以编译对测试进行分组的播放列表。例如,当开发一个新功能时,我们只想运行相关测试而不是所有现有测试,这很有用。

但是,在我看来,播放列表只能通过显式添加/删除单元测试来“手动”维护。

总比没有好,但如果我能根据某些标准(例如功能、测试持续时间等)“标记”我的单元测试并动态生成播放列表,那就太好了。

有什么方法可以使用默认测试框架在 Visual Studio 中执行类似的操作吗?

c# visual-studio unit-testing playlist smart-playlist
4个回答
4
投票

您可以通过右键单击然后“运行测试”,或者按 CTRL+R 然后按 T 来运行与当前光标位置相关的某些测试。

  • 如果光标位于测试主体内,则仅运行该测试。
  • 如果光标位于测试类的主体内,则仅运行该类中的测试。
  • 如果光标位于命名空间内,则将运行该命名空间中的所有测试。

请参阅有关该主题的 MSDN 文档

或者,您可以通过各种方式过滤测试浏览器。例如,我经常使用项目标志来排除某些项目。


3
投票

Visual Studio 2019 的更新 16.7.0 添加了创建动态定义的播放列表的功能。

根据这些注释,播放列表用户界面现在包含各种选择标准的复选框。底层 XML 似乎是一系列

<Rule>
元素。

要访问新的用户界面,可能需要单击测试资源管理器工具栏中的新铅笔图标(工具提示:编辑),并确认播放列表可能已更新为新格式。

来源:

您还可以通过直接编辑播放列表 xml 文件来使用特征来定义动态组。

截至2020年12月7日,我终于开始工作了。为了实现运行包含 MSTest 属性

[TestCategory("SchemaUpdateBasic")]
的任何测试的目标,可能与
[TestCategory("...")]

的其他实例一起运行
<Playlist Version="2.0">
  <Rule Name="Includes" Match="Any">
    <Property Name="Trait" Value="SchemaUpdateBasic" />
  </Rule>
</Playlist>

从 Visual Studio 版本 16.8.2 开始,这可以按预期工作。对我来说,之前的版本导致测试资源管理器窗口中出现正确的测试集,但单击“全部运行”会在测试输出中产生此结果

---------- Starting test discovery for requested test run ---------- Test run will use DLL(s) built for framework
...
========== Test discovery finished: 0 Tests found in 2.6 sec ========== No tests found to run.

来源: https://learn.microsoft.com/en-us/visualstudio/releases/2019/release-notes#--visual-studio-2019-version-1670

此外 https://github.com/MicrosoftDocs/visualstudio-docs/issues/6012 作为文档增强请求而存在。


1
投票

在 VS2017 中,您可以按命名空间、类、持续时间、结果、特征或项目对测试进行分组。可能以前就在那里,但我现在无法检查第一手资料。

为此,请在“测试资源管理器”窗口中单击第二个图标,然后单击您想要的任何选项。默认情况下,它们按结果分组。

如果您想使用 Traits,请将

Trait
名称/值属性添加到您的各个测试用例中:

[Trait("Foo", "Value1")]
[Trait("Foo", "Value2")]
[Trait("Bar", "Value")]
public void MyClass_MyMethod_WhenThing_Outcome()
{
    // ...
}

0
投票

敲铅笔

就我而言,我想按项目进行选择。取消勾选并勾选顶级项目:

© www.soinside.com 2019 - 2024. All rights reserved.