如何在Visual Studio测试运行程序中排除某些测试?

7xzttuei  于 2022-12-04  发布在  其他
关注(0)|答案(7)|浏览(186)

我在某些测试上有一些属性,我不希望在每次构建时都运行这些属性。我的大多数测试都是普通的单元测试,我确实希望它们在每次构建时都运行。

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

例如,我想排除CodedUItests

[CodedUITest]
public class SearchViewTests

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

[TestMethod]
[TestCategory("Database Integration")]
public void ContactRepositoryGetByIdWithIdExpectCorrectContact()

我特别希望排除编码的UI测试,因为它们会干扰我继续工作的能力,而所有其他测试都将在后台运行而不会干扰我。
最初这个问题是关于Visual Studio 2012的,所以我更喜欢在该版本和更高版本中工作的解决方案。

csga3l58

csga3l581#

TL;DR版本:

其他的回答也提到了一些解决方法和使用最新的Traits选项。但是,没有一个能告诉你如何明确地排除某个特征的测试。要做到这一点,只需使用-(减号)来否定搜索框中的过滤器,例如:

-Trait:"DatabaseIntegration"

这将排除具有该特性的所有测试。有关这些功能的MSDN文档有以下说明:
若要排除筛选结果的子集,请使用下列语法:

FilterName:"Criteria" -FilterName:"SubsetCriteria"

例如,

FullName:"MyClass" - FullName:"PerfTest"

会传回名称中包含“MyClass”的所有测试,但名称中也包含“PerfTest”的测试除外。

ivqmmu1c

ivqmmu1c2#

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

vpfxa7rd

vpfxa7rd3#

我发现唯一有效的“解决方案”(或者更好的解决方法)是指定一个“FullName”过滤器。

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

现在我可以在TestExplorer中指定一个筛选器,比如FullName: "UnitTests",它似乎可以工作。

  • (我希望能够在搜索名称中使用正则表达式,但似乎不支持。)*

ivqmmu1c

ivqmmu1c4#

您可以在Unit Text Explorer中使用搜索过滤器。

在2012随附的新测试探索器中,您可以按“测试结果”、“文件名”等对测试进行分组,但在RTM构建中,按“测试类别”进行分组/搜索在测试资源管理器中不存在。然而,在VS 2012中,命令行和TeamBuild中有一个基于TestCategory的筛选器(使用TestCaseFilter在VS 2012 RC中运行选择性单元测试)。
从VS开发团队的一个成员那里,他们了解到这个缺失特性的重要性。它在积压中,应该在未来的构建/更新中提供。
以下博客提供了更多详细信息:http://blogs.msdn.com/b/vikramagrawal/archive/2012/07/23/running-selective-unit-tests-in-vs-2012-rc-using-testcasefilter.aspx

50few1ms

50few1ms5#

您可以在测试资源管理器上应用一个筛选器。Trait:“UnitTest”此筛选器将只挑选具有TestCategory(“UnitTest”)属性的测试,而忽略其他测试。

42fyovps

42fyovps6#

我遇到了同样的问题,所有开发人员在运行解决方案中的所有单元测试时都会遇到破坏性的CodedUI。我的解决方法是将以下内容添加到CodedUI项目的AssemblyInitializer中:

if(!ConfigurationManager.AppSettings["MachinesToRunCodedUI"].Split(',').Contains(Environment.MachineName))
        Assert.Inconclusive("CodedUI Tests are skipped.");

只有当计算机是MachinesToRunCodedUI清单的一部分时,它才会执行CodedUI测试。

mum43rcc

mum43rcc7#

你看过这篇文章吗?How to: Group and Run Automated Tests Using Test Categories
我还没有在VS 2012中尝试过,但它仍然可能是有效的。就我所见,没有引用TFS,所以这应该指向正常的VS测试运行程序。

相关问题