web-dev-qa-db-fra.com

Comment exécuter NUnit en mode débogage à partir de Visual Studio?

J'ai récemment construit un framework de test pour un peu de C # sur lequel j'ai travaillé. J'ai installé NUnit et un nouveau projet dans mon espace de travail pour tester le composant. Tout fonctionne bien si je charge mes tests unitaires depuis Nunit (v2.4), mais j'ai atteint le point où il serait vraiment utile de fonctionner en mode débogage et de définir des points d'arrêt.

J'ai essayé les suggestions de plusieurs guides qui suggèrent toutes de modifier les propriétés 'Debug' du projet test:

Start external program: C:\Program Files\NUnit 2.4.8\bin\nunit-console.exe
Command line arguments: /Assembly: <full-path-to-solution>\TestDSP\bin\Debug\TestDSP.dll

J'utilise la version console ici, mais j'ai également essayé d'appeler l'interface graphique. Les deux me donnent la même erreur lorsque j'essaie de démarrer le débogage:

Cannot start test project 'TestDSP' because the project does not contain any tests.

Est-ce parce que je charge normalement\DSP.nunit dans l'interface graphique Nunit et c'est là que se déroulent les tests?

Je commence à penser que le problème est peut-être que VS veut exécuter son propre framework de test et c'est pourquoi il ne parvient pas à trouver les tests NUnit?

Edit: Pour ceux qui posent des questions sur les appareils de test, l’un de mes fichiers .cs du projet TestDSP ressemble à peu près à ceci:

namespace Some.TestNamespace
{
    // Testing framework includes
    using NUnit.Framework;

    [TestFixture]
    public class FirFilterTest
    {
        [Test]
        public void Test01_ConstructorTest()
        {
            ...some tests...
        }
    }
}

... Je suis assez nouveau pour C # et le framework de test NUnit, il est donc tout à fait possible que j'ai manqué des informations cruciales ;-)

Solution finale: Le gros problème était le projet que j'avais utilisé. Si vous choisissez Other Languages -> Visual C# -> Test -> Test Project ... lorsque vous choisissez le type de projet, Visual Studio essaiera d'utiliser son propre framework de test, pour autant que je sache. Vous devriez plutôt choisir un projet de bibliothèque normal C # et les instructions de la réponse sélectionnée fonctionneront.

117
Jon Cage

J'utilise la même technique que vous essayez Jon, sans l'indicateur/Assembly, c'est-à-dire.

Start External Program: C:\Program Files\NUnit 2.4.8\bin\nunit.exe

Command line arguments: "<path>\bin\Debug\Quotes.Domain.Tests.dll"

TestDSP.dll contient-il tous vos TestFixtures?

Comme mon projet de test n’est pas le projet de démarrage de la solution, j’exécute mes tests en cliquant avec le bouton droit de la souris sur le projet de test et en choisissant Déboguer -> Démarrer une nouvelle instance.

45
Patrick McDonald

Lorsque je dois déboguer mes tests NUnit, je me connecte simplement à l'application graphique NUnit nunit-agent.exe en utilisant "Debug | Attach to Process" et lancez les tests à partir de l'interface graphique. Tous les points d'arrêt de mes tests (ou le code qu'ils testent) sont atteints. Est-ce que je comprends mal votre question ou est-ce que cela fonctionnera pour vous?

100
Matt Hamilton

Supprimez simplement la ligne qui ressemble à

<ProjectTypeGuids>
    {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
</ProjectTypeGuids>

à partir de votre fichier de projet. Cette ligne indique en gros à VS.Net qu’il s’agit d’un projet test, ainsi le "Impossible de démarrer le projet test". Pour votre information, le premier guide dit "c’est un test", le deuxième indique "c’est C #". Pour plus d'informations sur ces guides: http://www.mztools.com/Articles/2008/MZ2008017.aspx

21
user276648

En plus de la réponse fournie par @Justin, voici quelques détails supplémentaires sur NUnit 2.6.

À l’aide de NUnit 2.6, associez nunit.exe ou nunit-console.exe et PAS l’agent. La configuration notée par @Justin est légèrement différente. Vous trouverez ci-dessous un exemple tiré de nunit.exe.config (identique à nunit-console.exe.config).

<startup useLegacyV2RuntimeActivationPolicy="true">
  <!-- Comment out the next line to force use of .NET 4.0 -->
  <supportedRuntime version="v2.0.50727" />  
  <supportedRuntime version="v4.0.30319" />
</startup>

Pour le projet de test .NET 4, pour obtenir des points d'arrêt à toucher, vous devrez commenter ou supprimer la ligne v2.0 comme le suggère le commentaire. Une fois que j'ai fait cela, j'ai pu déboguer le projet de test .NET 4.0.

18
dblood

Si vous utilisez NUnit 2.4 ou une version plus récente, vous pouvez insérer le code suivant dans votre classe SetUpFixture . (Vous pouvez le faire avec les anciennes versions, mais vous aurez besoin de faire n'importe quel équivalent du SetUpFixture ou de le copier dans le test lui-même.)

[SetUpFixture]
public class SetupFixtureClass
{
    [SetUp]
    public void StartTesting()
    {
        System.Diagnostics.Debugger.Launch();
    }
}

Qu'est-ce que Debugger.Launch() provoque l'affichage de la boîte de dialogue suivante lorsque vous cliquez sur Exécuter dans NUnit.

JIT Debugger Dialog

Vous choisissez ensuite votre instance en cours d'exécution de visual studio avec votre projet ouvert (la deuxième de ma capture d'écran), puis le débogueur sera attaché et tous les points d'arrêt ou exceptions apparaîtront dans Visual Studio.

17
Scott Chamberlain

Dans Nunit 3.0.1 (j'utilise VS2013), ouvrez le menu principal> Test> Windows> Test Explorer. Ensuite, dans "Test Explorer", cliquez avec le bouton droit sur le scénario de test, vous pourrez voir: enter image description here

J'espère que cela t'aides.

11
Quinn

Installer TestDriven.NET , qui est un plugin pour Visual Studio

À partir de là, vous pouvez cliquer avec le bouton droit de la souris sur votre assemblage de test unitaire et cliquer sur Exécuter les tests pour exécuter la suite complète, faire un clic droit sur une classe TestFixture pour exécuter uniquement les tests de cette classe ou un clic droit sur une méthode Test pour exécuter uniquement cette méthode.

Vous avez également la possibilité de tester avec le débogueur, si vous devez insérer des points d'arrêt dans vos tests en mode débogage.

6
Jon Limjap

Try NUnitit - Add-in Visual Studio pour le débogage Open Source open source Cas de test

HomePage - http://nunitit.codeplex.com/

6
abhilash

Supprimez ProjectTypeGuids du fichier de projet.

5
Steve

Maintenant avec des images:

  1. Exécutez gui NUnit ( = Téléchargez 2.6.2 à partir d’ici ) puis allez à File -> Open Project

enter image description here

  1. Sélectionnez votre test .dll du dossier bin (C:\......\[SolutionFolder][ProjectFolder]\bin\Debug\xxxxTests.dll)

  2. Allez à Visual Studio Debug -> Attach to process _ (La fenêtre d’attachement au processus s’ouvrira)

  3. Dans la liste, faites défiler et sélectionnez nunit-agent.exe puis cliquez sur Attach

enter image description here

  1. À ce stade, les points d'arrêt de vos tests doivent virer au rouge mûr (en creux).

  2. Cliquez sur Run sur Nunit Gui et vous devriez obtenir votre point d'arrêt frappé ...

J'espère que cela vous fait gagner du temps.

3
Matas Vaitkevicius

Si vous êtes en mesure de faire fonctionner la console/ou l'interface graphique, mais que vos points d'arrêt ne sont pas touchés, il se peut que votre application exécute un environnement d'exécution .NET différent de celui de NUnit. Vérifiez si votre runtime est spécifié dans le fichier nunit-console.exe.config/nunit.exe.config (les configurations résident dans le même répertoire que le fichier EXE de nunit).

<configuration>
    <startup>
       <supportedRuntime version="4.0" />
    </startup>
2
Justin Turner

Si le chemin du projet contient des espaces, par ex. "Nouveau projet" dans le chemin <path>\bin\Debug\New Project\Quotes.Domain.Tests.dll puis placez le chemin du projet Option de démarrage -> Arguments de la ligne de commande entre guillemets.

J'ai passé beaucoup de temps à comprendre cela.

2
Gyan Sada

À propos de ce que M. Patrick McDonald a dit

Comme mon projet de test n’est pas le projet de démarrage de la solution, j’exécute mes tests en cliquant avec le bouton droit de la souris sur le projet de test et en choisissant Déboguer -> Démarrer une nouvelle instance.

J'ai essayé d'appliquer pour ma bibliothèque de classes de test mais une erreur s'est produite concernant le chemin. J'ai donc essayé de supprimer les "arguments de ligne de commande" et, heureusement, cela a fonctionné correctement et comme prévu.

1

Pour moi, la solution consistait à adapter le fichier de configuration nunit. Pour utiliser nunit avec le framework 4.5-.Net et l'option de compilation x64, je devais ajouter une ligne à la balise de démarrage (version d'exécution prise en charge).

<startup useLegacyV2RuntimeActivationPolicy="true">
        <!-- Comment out the next line to force use of .NET 4.0 -->
        <supportedRuntime version="v4.0.30319" />
</startup>

Ensuite, je pourrais commencer par cliquer avec le bouton droit de la souris sur Testproject Debug -> Start new instance. Avant, je devais à nouveau attacher manuellement le projet au processus.

Mes propriétés de débogage étaient, C:\Program Files (x86)\NUnit 2.6.4\bin\nunit.exe avec l'argument de l'emplacement du fichier .dll à tester.

Plus d'informations: non à tester avec .NET 4.

0
Hauke Becker

Il existe également une extension maintenant appelée "Visual NUnit" qui vous permettra d’exécuter les tests à partir de Visual studio, à l’instar du descripteur de structure de test. Découvrez-le dans le gestionnaire d'extensions.

0
iamkrillin

J'ai eu la même erreur avec MSTest. J'ai trouvé que dans la fenêtre Test Output, certains tests avaient des ID en double et ne pouvaient pas être chargés. J'ai supprimé tous les tests en double et je pouvais maintenant exécuter les tests lorsque je démarrais le projet.

0
Vijay

Ouvrez Visual Studio ---> votre projet ---> Sélectionnez "Propriétés" ---> Sélectionnez "Débogage" -> Sélectionnez "Démarrer le programme externe" et définissez le chemin de votre NUnit (Ex: Démarrer le programme externe = C :\Program Files\NUnit 2.6.2\bin\nunit.exe) ----> Enregistrer

Après avoir défini ceci, cliquez simplement sur Debug

0
Farija Khan

On dirait que vous essayez d'utiliser la mauvaise bibliothèque. NUnit ne peut démarrer que si la dll que vous utilisez contient TestFixtures.

+1 sur TestDriven.Net. J'ai eu la chance de l'utiliser plusieurs fois. Vous pouvez télécharger la version personnelle à des fins d’évaluation conformément à la licence sur le site http://testdriven.net/purchase_licenses.aspx .

0
Mike737