在 Visual Studio 中使用单元测试时,可以编译将测试分组的播放列表。例如,当开发一个我们只想运行相关测试而不是所有现有测试的新功能时,这很有用。
但是,在我看来,播放列表只能通过显式添加/删除单元测试来“手动”维护。
总比没有好,但如果我可以根据某些标准(例如功能、测试持续时间等)“标记”我的单元测试并动态生成播放列表,那就太好了。
有没有办法在 Visual Studio 中使用默认测试框架做类似的事情?
在 Visual Studio 中使用单元测试时,可以编译将测试分组的播放列表。例如,当开发一个我们只想运行相关测试而不是所有现有测试的新功能时,这很有用。
但是,在我看来,播放列表只能通过显式添加/删除单元测试来“手动”维护。
总比没有好,但如果我可以根据某些标准(例如功能、测试持续时间等)“标记”我的单元测试并动态生成播放列表,那就太好了。
有没有办法在 Visual Studio 中使用默认测试框架做类似的事情?
您可以通过右键单击然后“运行测试”或按 CTRL+R 然后按 T 来根据当前光标位置运行某些测试。
请参阅有关该主题的MSDN 文档。
或者,您可以通过各种方式过滤测试资源管理器。例如,我经常使用 Project 标志来排除某些项目。
在 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://github.com/MicrosoftDocs/visualstudio-docs/issues/6012作为文档增强的请求而存在。
在 VS2017 中,您可以按 Namespace、Class、Duration、Outcome、Traits 或 Project 对测试进行分组。可能以前在那里,但我现在无法直接检查。
为此,在“测试资源管理器”窗口中,单击第二个图标,然后单击您想要的任何选项。默认情况下,它们按结果分组。
如果您想使用 Traits,请将Trait
name/value 属性添加到您的各个测试用例中:
[Trait("Foo", "Value1")]
[Trait("Foo", "Value2")]
[Trait("Bar", "Value")]
public void MyClass_MyMethod_WhenThing_Outcome()
{
// ...
}