在Visual Studio中是否有"动态播放列表"的单元测试功能?

8
在 Visual Studio 中使用单元测试时,可以编译分组测试的播放列表。例如,在开发新功能时,我们只想运行相关测试而不是所有现有测试,则此方法非常有用。
但是,它只能通过显式添加/删除单元测试来手动维护播放列表。
虽然这也比没有强,但如果我可以根据某些标准(例如功能、测试持续时间等)“标记”我的单元测试并动态生成播放列表,那就太好了。
在 Visual Studio 默认测试框架中是否有类似的功能呢?
4个回答

4
您可以通过右键单击并选择“运行测试”,或按下CTRL + R,然后再按T来根据当前光标位置上下文地运行某些测试。
  • 如果光标在测试主体内部,则只运行该测试。
  • 如果光标在测试类的主体内部,则只运行该类中的测试。
  • 如果光标在命名空间内,则会运行该命名空间中的所有测试。
有关此主题,请参见MSDN文档
另外,您还可以通过各种方式过滤测试资源管理器。例如,我经常使用Project标志来排除某些项目。

3

在更新16.7.0中,Visual Studio 2019新增了创建动态定义的播放列表的能力。

根据说明,播放列表用户界面现在包含各种选择条件的复选框。底层的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/zh-cn/visualstudio/releases/2019/release-notes#--visual-studio-2019-version-1670

https://github.com/MicrosoftDocs/visualstudio-docs/issues/6012 也存在对文档增强的请求。


1
谢谢!它也可以与NUnit测试发现(“Category”属性)一起使用。使用Match =“Any”允许包含多个特征-非常适合我的测试套件。 - Richard Petheram

1
在VS2017中,您可以按照名称空间、类、持续时间、结果、特征或项目对测试进行分组。可能之前就有了,但我现在无法亲自检查。
要这样做,在“测试资源管理器”窗口中,单击第二个图标,然后选择您想要的选项。默认情况下,它们按结果分组。
如果要使用特征,请将Trait名称/值属性添加到单个测试用例中:
[Trait("Foo", "Value1")]
[Trait("Foo", "Value2")]
[Trait("Bar", "Value")]
public void MyClass_MyMethod_WhenThing_Outcome()
{
    // ...
}

0
点击铅笔

enter image description here

在我的情况下,我想按项目选择。取消选中并选中顶级项目。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接