6

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

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

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

有没有办法在 Visual Studio 中使用默认测试框架做类似的事情?

4

3 回答 3

4

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

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

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

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

于 2014-05-07T08:20:23.000 回答
2

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

根据这些说明,播放列表用户界面现在包含各种选择标准的复选框。底层 XML 似乎是<Rule>元素的级联。

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

从来源:

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

截至 2020-12-07,我终于让它工作了。为了目标运行任何包含 MSTest Attribute 的测试[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 ://docs.microsoft.com/en-us/visualstudio/releases/2019/release-notes#--visual-studio-2019-version-1670

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

于 2020-10-23T14:22:18.117 回答
1

在 VS2017 中,您可以按 Namespace、Class、Duration、Outcome、Traits 或 Project 对测试进行分组。可能以前在那里,但我现在无法直接检查。

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

如果您想使用 Traits,请将Traitname/value 属性添加到您的各个测试用例中:

[Trait("Foo", "Value1")]
[Trait("Foo", "Value2")]
[Trait("Bar", "Value")]
public void MyClass_MyMethod_WhenThing_Outcome()
{
    // ...
}
于 2017-08-08T15:34:56.420 回答