如何在Visual Studio Test Runner中排除某些测试?

Fen*_*ton 31 tdd unit-testing visual-studio coded-ui-tests visual-studio-2012

我在某些测试中有属性,理想情况下我不想在每个构建上运行.我的大多数测试都是正常的单元测试,我确实希望它们在每个构建上运行.

那么:我如何按类别或项目类型排除测试?

例如,我想排除CodedUItests:

[CodedUITest]
public class SearchViewTests
Run Code Online (Sandbox Code Playgroud)

...或排除给定的测试TestCategory:

[TestMethod]
[TestCategory("Database Integration")]
public void ContactRepositoryGetByIdWithIdExpectCorrectContact()
Run Code Online (Sandbox Code Playgroud)

我特别希望排除编码的UI测试,因为它们会破坏我继续工作的能力,而所有其他测试都会在后台愉快地运行而不会打扰我.

最初这个问题是关于Visual Studio 2012的,所以我更喜欢那个版本以及更高版本的解决方案.

Jer*_*oen 64

TL; DR版本:

测试资源管理器显示-Trait:

其他答案评论了解决方法和使用更新的Traits选项.但是,没有人告诉您如何专门排除特征的测试.为此,只需使用-(减号)否定搜索框中的过滤器,例如:

-Trait:"DatabaseIntegration"
Run Code Online (Sandbox Code Playgroud)

这将排除具有该特征的所有测试.有关这些功能MSDN文档具有以下说明:

要排除过滤器结果的子集,请使用以下语法:

FilterName:"Criteria" -FilterName:"SubsetCriteria"

例如,

FullName:"MyClass" - FullName:"PerfTest"

返回名称中包含"MyClass"的所有测试,但名称中包含"PerfTest"的测试除外.


Jur*_*uri 8

我发现工作的唯一"解决方案"(或更好的解决方法)是指定"FullName"过滤器.基本上我通常构建我的解决方案

  • 项目A
  • ProjectA.UnitTests
  • ProjectA.IntegrationTests

等等.现在我可以在测试资源管理器中指定一个过滤器FullName: "UnitTests",似乎可以工作.
(我希望能够在搜索名称中使用正则表达式,但似乎不支持它.)

在此输入图像描述


小智 7

Visual Studio 2012 Update 1 CTP添加了对按项目和类别(特征)分组到测试资源管理器的支持. http://blogs.msdn.com/b/visualstudioalm/archive/2012/10/08/visual-studio-2012-update-1-ctp.aspx http://go.microsoft.com/fwlink/?LinkId= 268021