How to exclude certain tests in the Visual Studio Test Runner?

浪尽此生 提交于 2019-11-28 08:03:53

The only "solution" (or better workaround) I found to work is to specify a "FullName" filter. Basically I usually structure my solution like

  • ProjectA
  • ProjectA.UnitTests
  • ProjectA.IntegrationTests

and so on. Now I can specify a filter in the Test Explorer like FullName: "UnitTests" which seems to work.
(I'd expected to be able to use a regex within the search name but it doesn't seem to be supported.)

Jeroen

TL;DR version:

Other answers have commented on workarounds and use of the more recent Traits options. However, none quite tell you how to specifically exclude tests for a trait. To do so, simply use a - (minus) to negate a filter in the search box, e.g.:

-Trait:"DatabaseIntegration"

This will exclude all tests with that trait. The MSDN documentation on these features has the following explanation:

To exclude a subset of the results of a filter, use the following syntax:

FilterName:"Criteria" -FilterName:"SubsetCriteria"

For example,

FullName:"MyClass" - FullName:"PerfTest"

returns all tests that include "MyClass" in their name except those tests that also include "PerfTest" in their name.

The Visual Studio 2012 Update 1 CTP has added support for grouping by projects and categories (traits) to the Test Explorer. http://blogs.msdn.com/b/visualstudioalm/archive/2012/10/08/visual-studio-2012-update-1-ctp.aspx http://go.microsoft.com/fwlink/?LinkId=268021

Cybermaxs

You can use the search filter in Unit Text Explorer.

In the new Test Exlorer shipped with 2012, you can group tests by 'Test Results', 'FileName',... etc but in RTM build group/search by 'TestCategory' is not present from Test Explorer. However there is a filter in commandline and TeamBuild based on TestCategory (Running selective unit tests in VS 2012 RC using TestCaseFilter) in VS2012.

From a member of VS dev Team, they understood the importance of this missing feature. It is in the backlog, and it should be available in furutre builds/updates.

The following blog provides more details: http://blogs.msdn.com/b/vikramagrawal/archive/2012/07/23/running-selective-unit-tests-in-vs-2012-rc-using-testcasefilter.aspx

There's a filter you can apply on the Test Explorer. Trait:"UnitTest" this filter will pickup only the tests with TestCategory("UnitTest") attribute ignoring the others.

A bit late to the partyI had the same issue where all developers were confronted with disruptive CodedUI when just running all unit tests in a solution. My workaround is to add the following to the AssemblyInitializer of the CodedUI Project:

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

Only when a machine is part of that MachinesToRunCodedUI list, it will run the CodedUI tests.

Have you seen this article? How to: Group and Run Automated Tests Using Test Categories

I haven't yet tried this with VS 2012, but it still might be valid. As far as I could see there are no references to TFS, so this should be pointing at the normal VS test runner.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!