web-dev-qa-db-fra.com

Comment exclure certains tests dans Visual Studio Test Runner?

J'ai des attributs sur certains tests que je ne souhaite idéalement pas exécuter sur chaque build. La plupart de mes tests sont des tests unitaires normaux et je veux qu'ils s'exécutent sur toutes les versions.

Alors: comment puis-je exclure un test par catégorie ou type de projet?

Par exemple, je voudrais exclure CodedUItests:

[CodedUITest]
public class SearchViewTests

... ou exclure des tests dans une TestCategory donnée:

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

Je souhaite en particulier exclure les tests d’interface utilisateur codés, car ils perturbent ma capacité à continuer de travailler, alors que tous les autres tests fonctionneront en arrière-plan sans me déranger.

A l'origine, cette question concernait Visual Studio 2012, je préférerais donc des solutions fonctionnant dans cette version et les versions ultérieures.

25
Fenton

La seule "solution" (ou une meilleure solution de contournement) que j'ai trouvée est de spécifier un filtre "Nom complet". Fondamentalement, je structure habituellement ma solution comme

  • ProjectA
  • ProjectA.UnitTests
  • ProjectA.IntegrationTests

etc. Maintenant, je peux spécifier un filtre dans l'Explorateur de tests, comme FullName: "UnitTests", qui semble fonctionner.
(Je m'attendais à pouvoir utiliser un regex dans le nom de la recherche mais cela ne semble pas être pris en charge.)

enter image description here

6
Juri

TL; version DR:

Test Explorer showing -Trait:"CategoryName" filter

D'autres réponses ont commenté les solutions de contournement et l'utilisation des options Traits plus récentes. Cependant, personne ne vous dit vraiment comment spécifiquement exclure les tests pour un trait . Pour ce faire, utilisez simplement un - (moins) pour nier un filtre dans le champ de recherche, par exemple:

-Trait:"DatabaseIntegration"

Cela exclura tous les tests avec ce trait. La documentation MSDN sur ces fonctionnalités a l'explication suivante:

Pour exclure un sous-ensemble des résultats d'un filtre, utilisez la syntaxe suivante:

FilterName:"Criteria" -FilterName:"SubsetCriteria"

Par exemple,

FullName:"MyClass" - FullName:"PerfTest"

renvoie tous les tests qui incluent "MyClass" dans leur nom, à l'exception des tests qui incluent également "PerfTest" dans leur nom.

57
Jeroen

Le CTP de Visual Studio 2012 Update 1 a ajouté la prise en charge du regroupement par projets et catégories (traits) à l'Explorateur de tests. http://blogs.msdn.com/b/visualstudioalm/archive/2012/10/08/visual-studio-2012-update-1-ctp.aspxhttp://go.Microsoft.com/fwlink /? LinkId = 268021

7
Todd King

Vous pouvez utiliser le filtre de recherche dans Unit Text Explorer.

unit test Explorer

Dans le nouveau Test Exlorer livré avec 2012, vous pouvez regrouper les tests par 'Résultats du test', 'Nom du fichier', ... etc, mais dans RTM le groupe de construction/recherche par 'TestCategory' n'est pas présent dans Test Explorer. . Cependant, il existe un filtre dans Commandline et TeamBuild basé sur TestCategory (Exécution de tests unitaires sélectifs dans VS 2012 RC à l'aide de TestCaseFilter) dans VS2012.

En tant que membre de l'équipe de développement de VS, ils ont compris l'importance de cette fonctionnalité manquante. Il est dans le carnet de commandes et devrait être disponible dans les versions/mises à jour futures.

Le blog suivant fournit plus de détails: http://blogs.msdn.com/b/vikramagrawal/archive/2012/07/23/running-selective-unit-tests-in-vs-2012-rc-using-testcasefilter .aspx

3
Cybermaxs

Vous pouvez appliquer un filtre sur l'Explorateur de tests. Trait: "UnitTest", ce filtre ne ramassera que les tests avec l'attribut TestCategory ("UnitTest") en ignorant les autres.

3
Waldyr Felix

Un peu tard pour le parti, j'avais le même problème où tous les développeurs étaient confrontés à CodedUI, une source de perturbation, lorsqu'ils exécutaient tous les tests unitaires dans une solution. Ma solution consiste à ajouter les éléments suivants au AssemblyInitializer du projet CodedUI:

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

Ce n'est que lorsqu'une machine fait partie de cette liste MachinesToRunCodedUI qu'elle exécutera les tests CodedUI.

1
Nick

Avez-vous vu cet article? Comment: regrouper et exécuter des tests automatisés à l'aide de catégories de test

Je n'ai pas encore essayé avec VS 2012, mais cela reste peut-être valide. Autant que je sache, il n’ya pas de référence à TFS, ce qui devrait donc indiquer le programme d’exécution de test standard.

0
Jens H