2010-11-25 47 views
4

J'ai des tests d'intégration que je lance à partir de Visual Studio 2008 Development Edition (ils sont exécutés en tant que tests unitaires MSTest, même s'il s'agit de tests d'intégration). Je voudrais faire un profilage pendant que les tests sont effectués.Comment faire pour tester les tests unitaires de MsTest dans Visual Studio 2008?

Dans mon cas, j'ai un test "ordonné" MSTest que je cours. J'aimerais recueillir des données d'échantillonnage pendant que chacun des tests ordonnés est exécuté.

Comment faire?

p.s. Peut-être que je peux accomplir cela à partir de la ligne de commande, si je lance manuellement mstest à partir d'une invite de commande, tout en essayant de suivre command line directions. Malheureusement, lorsque j'essaie de lancer VsPerfCLREnv à partir de l'invite de commande de Visual Studio, il s'agit du "fichier introuvable". Que diable?

+0

Je ne ferais pas cela; un goulot d'étranglement pour vos tests pourrait ne pas être un goulot d'étranglement pour votre application. – jason

Répondre

1

Malheureusement tests n'ont commandés pas l'option « Créer session performance » disponible: Ordered Tests

Si vous aviez un simple test de l'unité que vous seriez en mesure de créer une session de performance. Pour utiliser le profilage en ligne de commande, vous pouvez accéder à \ Program Files \ Microsoft Visual Studio 9.0 \ Outils d'équipe \ Outils de performance où vous verrez le fichier vsperfclrenv.cmd et d'autres outils mentionnés sur le blog du profileur.

2

Je viens de travailler sur le profilage dans VS2008. Dans le cas où il aide tout le monde, voici comment je l'ai eu à travailler:

  1. Vérifiez que vous êtes en Debug mode de configuration
  2. Cliquez Analyse > Launch Performance Wizard
  3. Sélectionnez Profile a dynamic link library
  4. Entrez les informations suivantes:
    • dll chemin: La DLL que vous voulez instrument, situé dans la bin \ Debug de votre projet de test de l'unité
    • Chemin d'accès: C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\MSTest.exe
    • Démarrer Option Arguments: /testmetadata:TestList.vsmdi /runconfig:TestRunConfig1.testrunconfig
      • Rectifiez ce basé sur le nom de vos fichiers vsmdi et testrunconfig.
    • répertoire de travail: ACHEMINEMENT racine de solution
  5. Choisissez Instrumentatation. Je n'ai pas essayé Sampling, donc je ne peux pas commenter cela.
  6. exécuter le nouveau projet de performance

En utilisant cette approche, j'identifiais le goulot d'étranglement dans mon code et les tests unitaires sont maintenant 15x plus rapide, et les utilisateurs constatent une amélioration de la vitesse 10x.

+1

Savez-vous si cela devrait fonctionner sur VS2010? J'ai essayé de suivre les étapes (avec le chemin d'accès mis à jour à 10.0 MSTest.exe), et je continue à obtenir l'erreur "Impossible de charger le fichier ou l'assembly" VSPerfControl.Interop, Version = 2.0.0.0, Culture = neutre, PublicKeyToken = b03f5f7f11d50a3a'' ". De même, à l'étape 4, choisissez-vous la DLL pour le projet de test (par exemple, Foo.Test.dll) ou le projet lui-même (par exemple Foo.dll)? –

+0

@CalebBell: Dans VS2010, vous pouvez le faire beaucoup plus facilement. Voir cette [question] (http://stackoverflow.com/questions/3145536/how-to-profiler-unit-test-in-visual-studio-2010). – Iain

+0

Merci, mais je suis intéressé par l'utilisation de tests unitaires multiples (et éventuellement de la suite de tests unitaires) en tant qu'ensemble de travail pour le profilage. Savez-vous si c'est possible? Ou même une bonne idée? Peut-être que je devrais ouvrir une nouvelle question, parce que je n'ai pas vu de questions connexes. Merci de revenir à moi! –