web-dev-qa-db-fra.com

Comment exécuter des tests de tests unitaires à partir de la ligne de commande?

J'ai googlé et trouvé les références utiles ci-dessous. Actuellement, je veux tout exécuter à partir de la ligne de commande (pour faciliter l'exécution et la rapidité) dans les cas:

  1. Un test spécifique (c'est-à-dire un test écrit par une méthode marquée [TestMethod ()])
  2. Tous les tests dans une classe
  3. Tous les tests impactés du TFS actuel en attendant le changement de mine.
  4. Tous les tests
  5. Tous les tests sauf ceux marqués comme catégorie [TestCategory ("some-category")]

Je ne sais pas comment puis-je écrire une commande correcte pour mes besoins ci-dessus.

Les références:

  1. le MSTest.exe http://msdn.Microsoft.com/en-us/library/ms182487.aspx
  2. les options détaillées de MSTest.exe http://msdn.Microsoft.com/en-us/library/ms182489.aspx
  3. obtenir le résultat http://msdn.Microsoft.com/en-us/library/ms182488.aspx

[Éditer]

Après un certain temps, j'ai trouvé les conseils utiles ci-dessous.

  1. exécuter des tests unitaires Visual Studio à l'aide de MSTest.exe, situé à %ProgramFiles%\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe dans mon cas.
  2. en utilisant /testcontainer:Path\To\Your\TestProjectAssembly.dll pour indiquer où vos tests sont codés. Vous pouvez spécifier plusieurs options '/ testcontainer' si nécessaire.
  3. en utilisant /test:TestFilter pour filtrer les tests à exécuter. Notez que ce filtre est appliqué au nom complet de la méthode de test (c.-à-d. FullNamespace.Classname.MethodName)
50
Nam G VU

Actuellement, je peux avoir des réponses à mes besoins:

  1. n test spécifique (ie. Un test écrit par une méthode marquée [TestMethod()])
    Utilisation MSTest.exe/container: TheAssemblyContainingYourSpecificTest /test: TheSpecificTestName

  2. Tous les tests d'une classe
    Utilisation MSTest.exe/container: TheAssemblyContainingYourClass /test: TheClassNameWithFullNamespace
    Notez que le /test: est le filtre qui utilise le nom complet de la classe lors du filtrage.

Les autres sont toujours inconnus. Veuillez discuter si vous savez comment.

15
Nam G VU

Pour le nombre 4. Pour exécuter tous les tests dans un assembly, c'est simplement:

mstest /testcontainer:YourCompiledTestAssembly.dll

13

Pour question

5 Tous les tests sauf ceux marqués comme catégorie [TestCategory ("some-category")]

Utilisation

mstest.exe /testcontainer:yourTests.dll  /category:"!some-category"

Si vous devez exclure plusieurs catégories, utilisez

mstest.exe /testcontainer:yourTests.dll  /category:"!group1&!group2"

Référence: / filtre de catégorie

4
Michael Freidgeim

Vous pourriez être intéressé par le pack Gallio . Il fournit une plate-forme d'automatisation commune gratuite pour exécuter vos tests (MSTest, MbUnit, NUnit, xUnit, etc.) avec divers exécuteurs de test (GUI, ligne de commande, PoSh, plugins pour des outils tiers, etc.)

En particulier, vous voudrez peut-être utiliser Gallio.Echo qui est un bon lanceur de test en ligne de commande:

Gallio.Echo

Les testeurs Gallio ont également capacités de filtrage pour exécuter un sous-ensemble de vos tests unitaires uniquement (par exemple par catégorie, par appareil, etc.)

3
Yann Trevin