Comment exclure certains tests dans le Visual Studio Test Runner?

j'ai des attributs sur certains tests que je ne veux idéalement pas exécuter sur chaque build. La plupart de mes tests sont des tests unitaires normaux et je veux qu'ils fonctionnent sur chaque construction.

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 les tests dans unTestCategory:

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

je veux particulièrement exclure les tests D'assurance-chômage codés car ils perturbent ma capacité pour continuer à travailler, alors que tous les autres tests fonctionneront avec plaisir à l'arrière-plan sans me déranger.

à l'origine, cette question concernait Visual Studio 2012, donc je préférerais des solutions qui fonctionnent dans cette version et plus.

23
demandé sur Jeroen 2012-09-25 15:29:20

7 réponses

la seule" solution "(ou meilleure solution) que j'ai trouvée pour travailler est de spécifier un filtre" FullName". Fondamentalement, je structure habituellement ma solution comme

  • ProjectA
  • ProjectA.UnitTests
  • ProjectA.IntegrationTests

et ainsi de suite. Maintenant je peux spécifier un filtre dans L'Explorateur de Test comme FullName: "UnitTests" qui semble fonctionner.

(Je m'attendais à pouvoir utiliser un regex dans le nom de recherche mais il ne semble pas être soutenu.)

enter image description here

6
répondu Juri 2012-10-03 08:43:37

TL; DR version:

Test explorer showing -Trait:"CategoryName" filter

D'autres réponses ont fait des commentaires sur les solutions de rechange et l'utilisation des Traits options. Cependant, aucun assez vous dire comment spécifiquement exclure les tests pour un trait. Pour ce faire, utilisez simplement un - (moins) pour annuler un filtre dans la zone de recherche, par exemple:

-Trait:"DatabaseIntegration"

ceci exclura tous les tests avec ce trait. MSDN documentation sur ces fonctionnalités a la explication suivante:

Pour exclure une partie 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 aussi" PerfTest " dans leur nom.

50
répondu Jeroen 2017-05-12 08:09:32

Visual Studio 2012 Update 1 CTP a ajouté le support pour le regroupement des projets et des catégories (les traits) à l'épreuve de l'Explorateur. http://blogs.msdn.com/b/visualstudioalm/archive/2012/10/08/visual-studio-2012-update-1-ctp.aspx http://go.microsoft.com/fwlink/?LinkId=268021

7
répondu Todd King 2012-10-10 05:59:54

vous pouvez utiliser le filtre de recherche dans L'Explorateur de texte D'Unité.

unit test explorer

dans le nouveau test Exlorer livré avec 2012, vous pouvez grouper les tests par 'Résultats des tests','nom de fichier',... etc mais dans RTM build group / search by 'TestCategory' n'est pas présent dans L'Explorateur de Test. Cependant, il existe un filtre en ligne de commande et TeamBuild basé sur TestCategory (exécution de tests sélectifs en unités dans VS 2012 RC en utilisant TestCaseFilter) en VS2012.

D'un membre de L'équipe VS dev, ils ont compris l'importance de cette fonctionnalité manquante. Il est dans l'arriéré, et il devrait être disponible dans d'Autres constructions/mises à jour.

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
répondu Cybermaxs 2012-09-26 23:32:51

il y a un filtre que vous pouvez appliquer sur L'Explorateur de Test. Trait: "UnitTest"ce filtre ne récupérera que les tests avec l'attribut TestCategory ("UnitTest") ignorant les autres.

3
répondu Waldyr Felix 2012-12-04 18:10:22

un peu en retard à la partie i avait le même problème où tous les développeurs ont été confrontés à un code perturbateur lors de l'exécution de tous les tests de l'unité dans une solution. Ma solution est d'ajouter le texte suivant à la AssemblyInitializer de la CodedUI Projet:

    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 de machines que les essais CodedUI seront effectués.

1
répondu Nick 2016-07-15 13:19:45

Avez-vous vu cet article? comment: grouper et exécuter des Tests automatisés en utilisant des catégories de Test

Je n'ai pas encore essayé avec VS 2012, mais il pourrait encore être valide. Pour autant que je puisse voir il n'y a aucune référence à TFS, donc cela devrait être pointer vers le coureur normal VS test.

0
répondu Jens H 2012-09-25 14:19:01