19

在我们的解决方案中,我们有几个测试项目。它们中的大多数包含运行速度很快的单元测试,但有些用于集成、验收和 UI 测试,需要相当长的时间才能完成。现在我想要一种只运行单元测试的便捷方式。通过使用热键运行全部或使用新功能在每次构建后运行测试。

不幸的是,VS 也运行所有慢速测试。在 VS10 中,我将测试视图中的测试按项目分组,并仅选择包含单元测试的测试。这并不像我希望的那么容易,但至少它是可能的。现在似乎没有办法在解决方案中运行所有测试。

我目前看到的唯一选择是从解决方案中删除除单元测试之外的所有内容,但这会限制重构能力。

那么有谁知道如何在新的 VS 中轻松地对单元测试进行分组和运行?

4

5 回答 5

9

在 Visual Studio 2012 Update 1 CTP 中,测试资源管理器添加了按项目或特征(类别)对测试进行分组的选项。

请转到此链接以查看那里有什么新内容。

于 2012-10-12T21:15:22.810 回答
8

您可以使用单元文本资源管理器中的搜索过滤器。

在此处输入图像描述

在 2012 年附带的新 Test Exlorer 中,您可以按“测试结果”、“文件名”等对测试进行分组,但在 RTM 构建组/按“TestCategory”搜索时,测试资源管理器中不存在。但是,命令行和 TeamBuild 中有一个过滤器,基于 VS2012 中的 TestCategory(在 VS 2012 RC 中使用 TestCaseFilter 运行选择性单元测试)。

从 VS 开发团队的一名成员那里,他们了解了这个缺失功能​​的重要性。它在积压中,应该可以在未来的构建/更新中使用。

以下博客提供了更多详细信息:http: //blogs.msdn.com/b/vikramagrawal/archive/2012/07/23/running-selective-unit-tests-in-vs-2012-rc-using-testcasefilter.aspx

于 2012-09-27T14:15:50.610 回答
3

从 Visual Studio 2012 Update 2(目前在 CTP 上)开始,我们现在能够使用“播放列表”或基于“列表和类”运行单元测试的子集。更多信息在这里:http: //blogs.msdn.com/b/visualstudioalm/archive/2013/01/30/first-ctp-for-visual-studio-update-2.aspx#playlists

原答案:

AFAIK,VS2012中的新单元测试框架“支持通过TestCaseFilter根据过滤条件选择性执行”。不幸的是,目前不支持通过用户界面执行此操作,但它在产品组的积压中。您可以通过测试构建或命令行使用此方法。请参考以下博客:http: //blogs.msdn.com/b/vikramagrawal/archive/2012/07/23/running-selective-unit-tests-in-vs-2012-rc-using-testcasefilter.aspx

编辑:按照 MSDN 文档使用测试类别对测试进行分组。

http://msdn.microsoft.com/en-us/library/dd286595.aspx

另外,请参阅此问题:如何在 Visual Studio 2012 测试运行程序中排除某些测试?

它显示了基于测试路径的过滤示例。

于 2012-09-26T18:37:56.160 回答
2

我建议使用TestDriven.Net。将所有单元测试项目分组在一个解决方案文件夹中,并将所有其他测试分组在另一个文件夹中。然后只需右键单击“单元测试”文件夹并选择“运行所有测试”。我总是喜欢这个伟大的 VS 原生测试工具的测试运行器。

另一种方法是使用NCrunch - 它在您编写代码时在后台运行您的所有测试。它可以很好地处理集成测试,因为它们在后台并行运行,因此不会阻止您(您还可以选择运行哪些测试项目)。不过有一个问题——我相信它还不支持 VS2012,但可能很快。

于 2012-08-29T07:05:54.380 回答
1

我也错过了这个功能......(我们做了和你一样的事情:按项目或有时按名称空间分组)。但我发现我可以使用测试资源管理器搜索功能以某种方式解决这个问题:

https://msmvps.com/blogs/deborahk/archive/2012/09/16/searching-and-grouping-in-vs-2012-test-explorer.aspx

在我的情况下,我可以使用 FullName 上的搜索过滤器确定我需要运行的特定测试(使用搜索框上的下拉菜单,或输入 FullName:"UnitTest")

它不一样,但它对我有用

于 2012-09-21T12:01:56.740 回答