web-dev-qa-db-fra.com

Tests de profilage dans Visual Studio Community 2015

Les publications sur le Web suggèrent que vous pouvez profiler des tests dans Visual Studio en cliquant avec le bouton droit et en sélectionnant "Test de profil": http://adamprescott.net/2012/12/12/performance-profiling-for-unit- tests / Mais je ne vois que "Run Test" et "Debug Test" pour mes tests NUnit, et la même chose pour xUnit.NET. Qu'est-ce qui me manque pour profiler les tests? Est-ce que ce n'est tout simplement pas pris en charge dans l'édition communautaire, ou il me manque une configuration ou un composant?

(Il semblerait étrange que ce ne soit pas pris en charge dans la communauté, étant donné que je peux profiler les exécutables dans la communauté, et que je pourrais donc contourner ce problème en créant un exécutable qui exécute le test et le profiler. Pourquoi prendre en charge le profilage des exécutables mais pas le profilage des tests? )

Étapes de reproduction pour NUnit: création d'un nouveau projet de bibliothèque C # dans Visual Studio Community 2015, collage du contenu de http://nunit.org/index.php?p=quickStartSource&r=2.6.4 dans un nouveau fichier, installé les packages NuGet comme suit:

<packages>
  <package id="NUnit" version="2.6.4" targetFramework="net452" />
  <package id="NUnit.Runners" version="2.6.4" targetFramework="net452" />
  <package id="NUnitTestAdapter" version="2.0.0" targetFramework="net452" />
</packages>

Même redémarré Visual Studio. Les tests s'affichent dans l'Explorateur de tests et peuvent être exécutés, mais aucune option "Test de profil" n'est disponible dans le menu contextuel. A également essayé des étapes équivalentes pour xUnit.net, mais pas de joie.

27
Neil Brown

Désolé de répondre à une question plus ancienne, mais je pensais pouvoir améliorer la réponse actuelle avec la façon dont j'ai pu profiler un test NUnit dans VS Community 2015 plus tôt dans la journée.

Profilage du runner de test NUnit en tant qu'exécutable

  1. Assurez-vous que vous exécutez VS2015 en tant que Administrateur.
  2. Cliquez sur Analyser> Performance Profiler ... dans la barre d'outils.
  3. Choisissez Assistant Performance et cliquez sur Démarrer.
  4. Page 1: Dans mon cas, je voulais voir les allocations alors j'ai cliqué sur . NET memory allocation.
  5. Page 2: laissez l'option n exécutable (fichier .EXE) cochée et continuez.
  6. Page 3: Sur cette page, vous devez définir l'exécutable à exécuter.

    Ce sera le lanceur de test nunit3-console.exe Pour NUnit, ou quel que soit l'équivalent pour votre framework de test.

    • Quel est le chemin d'accès complet à l'exécutable? C:\Program Files (x86)\NUnit.org\nunit-console\nunit3-console.exe
    • Arguments de ligne de commande: bin\Debug\Test.dll --inprocess --test TestNamespace.TestClassName.Test_Method_Name
    • Répertoire de travail: \\MAC\Home\Documents\GitHub\ApplicationName\Test

Vous devrez remplacer ces chemins par ceux qui conviennent à votre système. Le commutateur --inprocess Entraîne l'exécution des tests en ligne à partir du processus NUnit. Sans ce commutateur, un processus enfant est généré et même si le profileur semble fonctionner, vous allez simplement profiler nunit3-console.exe, pas votre propre code.

  1. Page 4: Cliquez Terminer.

    Gardez à l'esprit que le profileur générera des fichiers de rapport et les enregistrera dans votre répertoire de travail. Dans mon cas, comme mon répertoire de travail était un partage UNC, il m'a fallu choisir un chemin de dossier local pour enregistrer les rapports avant que le profileur ne démarre.

    Une fenêtre de terminal devrait apparaître brièvement avec la sortie du runner NUnit. La fenêtre se ferme automatiquement, donc si vous voyez un flash de texte rouge, vous n'aurez pas le temps de lire l'erreur avant qu'elle ne disparaisse. Vous pouvez copier la commande de la page 3 dans une invite de commande pour une lecture plus tranquille.

  2. Après l'exécution de la commande (qu'elle ait réussi ou non), vous devriez obtenir un rapport dans lequel vous pouvez suivre le nombre d'allocations provoquées par votre test.

Malheureusement, les allocations dans un petit test seront probablement éclipsées par les allocations causées par le NUnit.Framework lui-même. J'ai cliqué pour voir s'il y avait un moyen de les exclure des résultats, mais je n'ai pas trouvé de moyen de le faire, alors je les ai simplement ignorés.

Si vous souhaitez profiler un test différent, vous pouvez ouvrir Performance Explorer et cliquer avec le bouton droit sur nunit3-console.exe > Properties Pour modifier les arguments de la ligne de commande, puis cliquer sur Actions > Start Profiling Pour actualiser le rapport.

Conclusion

Cette solution réussit à profiler les résultats d'un seul test NUnit, mais cette déclaration s'accompagne de quelques mises en garde.

Il n'était que légèrement moins désagréable que de créer un exécutable distinct pour le profil, et le fait que les allocations NUnit apparaissent dans le rapport pourrait en faire un non-démarreur si vous avez besoin de faire un profilage vraiment sensible.

Peut-être que quelqu'un avec plus d'expérience VS 2015 peut m'aider à améliorer cette réponse avec quelques conseils sur la façon d'exclure la DLL NUnit.Framework du rapport?

13
Jeremy Liberman

La réponse semble être dans un commentaire sur la page d'Adam Prescott référencée dans la question:

16 août 2013 à 16 h 57

Malheureusement, par MSDN, cette fonctionnalité n'est disponible que dans les éditions Premium et Ultimate.

http://msdn.Microsoft.com/en-us/library/ms182372.aspx

Le lien dans le commentaire fait actuellement référence à l'édition 2015 de Visual Studio. édition 201 de la page montre clairement quelles versions de Visual Studio 2010 prennent en charge le profilage. Les pages de la version 2012 et ultérieure n'indiquent pas clairement quelles versions prennent en charge le profilage.

5
AdrianHHH

Il est possible de profiler les tests MSTest (peut également profiler nunit/xunit avec des adaptateurs de test) en utilisant vstest.console.exe

  • Sélectionnez le programme exécutable comme cible dans Analyze -> Performance Profiler
  • Fournissez le chemin d'accès du vstest.console.exe (Vit généralement dans C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow)
  • Fournissez des paramètres comme <full path to test dll file>.dll /TestCaseFilter:"FullyQualifiedName~<namespace>.<test class>" Comme paramètres
  • Si vous utilisez nUnit ou xUnit, fournissez adaptateur de test nunit , ou adaptateur de test xunit chemin en utilisant l'argument /TestAdapterPath À vstest.console.exe

Plus info sur la façon de fournir des paramètres à vstest.exe

5
Low Flying Pelican