Comment exécuter des tests (unitaires) dans différents dossiers/projets séparément dans Visual Studio ?

StackOverflow https://stackoverflow.com/questions/13938

Question

Visual Studio folder structure

J'ai besoin de conseils sur la manière de séparer facilement les exécutions de tests pour les tests unitaires et les tests d'intégration dans Visual Studio.Souvent, ou toujours, je structure la solution comme présentée dans l'image ci-dessus :projets distincts pour les tests unitaires et les tests d’intégration.Les tests unitaires sont exécutés très fréquemment tandis que les tests d'intégration sont naturellement exécutés lorsque le contexte est correctement aligné.

Mon objectif est de pouvoir en quelque sorte configurer les tests (ou dossiers de tests) à exécuter lorsque j'utilise un raccourci clavier.Les tests doivent de préférence être exécutés par un lanceur de tests graphique (ReSharpers).Alors par exemple

  • Alt+1 exécute les tests dans le projet BLL.Test,
  • Alt+2 exécute les tests dans le projet DAL.Tests,
  • Alt+3 les exécute tous les deux (c'est-à-diretous les tests du dossier [Tests], et
  • Alt+4 exécute les tests dans le dossier [Tests.Integration].

TestDriven.net a la possibilité d'exécuter uniquement le test dans le dossier ou le projet sélectionné en cliquant dessus avec le bouton droit et en sélectionnant Exécuter le(s) test(s).Être capable de le faire, mais via une commande clavier et avec un programme d'exécution de test graphique, serait génial.

TestDriven.net test run output

Actuellement, j'utilise VS2008, ReSharper 4 et nUnit.Mais les conseils pour une configuration en général sont bien sûr également appréciés.

Était-ce utile?

La solution

En fait, j'ai trouvé moi-même une sorte de solution à ce problème en utilisant une commande clavier liée à une macro.La macro a été enregistrée depuis le menu Outils>Macros>Enregistrer une macro temporaire.Pendant l'enregistrement, j'ai sélectionné mon dossier [Tests] et exécuté ReSharpers UnitTest.ContextRun.Cela a abouti à la macro suivante,

Sub TemporaryMacro()
    DTE.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate
    DTE.ActiveWindow.Object.GetItem("TestUnitTest\Tests").Select(vsUISelectionType.vsUISelectionTypeSelect)
    DTE.ExecuteCommand("ReSharper.UnitTest_ContextRun")
End Sub

qui était ensuite lié à sa propre commande clavier dans Outils>Options>Environnement>Clavier.

Cependant, ce qui serait encore plus génial, c'est une solution plus générale où je peux configurer exactement quels projets/dossiers/classes exécuter et quand.Par exemple au moyen d'un fichier xml.Cela pourrait ensuite facilement être enregistré dans le contrôle de version et distribué à tous ceux qui travaillent sur le projet.

Autres conseils

C'est une solution un peu délicate, mais vous pouvez en configurer certaines outils externes pour chacun des groupes de tests que vous souhaitez exécuter.Je ne sais pas si vous pourrez lancer le programme d'exécution de test ReSharper de cette façon, mais vous pouvez exécuter la version console de nunit.Une fois que vous avez configuré ces outils, vous pouvez attribuer des raccourcis clavier aux commandes "Tools.ExternalCommand1", "Tools.ExternalCommand2", etc.

Cela ne s'adaptera pas vraiment très bien et il est difficile de le modifier - mais cela vous donnera des raccourcis clavier pour exécuter vos tests.Il semble qu'il devrait y avoir une manière beaucoup plus simple de procéder.

Vous pouvez utiliser une macro VS pour analyser le fichier XML, puis appeler nunit.exe avec l'argument de ligne de commande /fixture pour spécifier les classes à exécuter ou générer un fichier de sauvegarde de sélection et exécuter nunit en l'utilisant.

Je ne l'ai jamais utilisé mais cela pourrait peut-être aider....

http://www.codeplex.com/VS2008UnitTestGUI

"DESCRIPTION DU PROJET Ce projet consiste à exécuter tous les tests unitaires à l'intérieur de plusieurs tests unitaires .NET CODED avec Visual Studio 2008."

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top