web-dev-qa-db-fra.com

Comment déboguer le test Nunit dans Visual Studio 2010

J'ai un problème pour déboguer un test NUnit à partir de VisualStudio. J'ai créé un projet vide (application console), puis j'ai ajouté des références à la bibliothèque NUnit et rédigé un test simple.

namespace ReimplementingLinq.Tests
{
    [TestFixture]
    public class WhereTest
    {
        [Test]
        public void SimpleFiltering()
        {
            int[] source = { 1, 2, 3, 4, 2, 8, 1 };
            var result = source.Where(val => val < 4);
            int[] expected = {1,2,3,4};
            CollectionAssert.AreEqual(expected, result);
        }
    }
}

Ensuite, j'ai suivi les conseils donnés dans ce lien Comment exécuter NUnit en mode débogage à partir de Visual Studio? mais aucune des solutions dans ce sujet ne fonctionne pour moi. Aucun de mes points d'arrêt n'est atteint pendant l'exécution du test. J'ai essayé de tester la solution en m'attachant au processus et en exécutant le projet avec un programme externe avec des arguments. 

Que puis-je faire pour déboguer mon test unitaire?

20
commando

En supposant que vous utilisiez une version de Visual Studio autre que Express Edition, alors TestDriven.NET pourrait être utile.

Après l'avoir installé

  1. Définir un point d'arrêt dans votre méthode de test
  2. Faites un clic droit et choisissez le débogueur dans le menu Test avec
  3. Le débogueur devrait se lancer et atteindre votre point d'arrêt

Malheureusement, vous ne pouvez pas utiliser cette méthode avec les éditions Express de Visual Studio, car TestDriven.NET est un plug-in pour Visual Studio et les éditions Express ne prennent pas en charge l'utilisation de plug-ins.

Exécution d'un test dans une application de console

Vous pouvez également exécuter un test dans le débogueur via une application console:

  1. Créer une nouvelle application console
  2. Référencez votre projet de tests unitaires
  3. Dans la méthode Main de l'application console, créez une nouvelle instance de votre fixuture de test, puis appelez l'une des méthodes de test. Par exemple, si j'ai un appareil appelé MyTests et un test nommé Test1, j'écrirais:

    var myTests = new MyTests();
    myTests.Test1();
    
  4. Définissez un point d'arrêt sur la ligne où vous créez une instance de la classe MyTests et appuyez sur F5

  5. Le débogueur atteindra votre point d'arrêt et vous pourrez ensuite utiliser F11 pour entrer dans le constructeur de votre TestFixture ou dans le test lui-même.
13
Crippledsmurf

Exécuter ou déboguer des tests NUnit directement avec Visual Studio

Regarde ma pas d'extensions!

Configurez simplement votre projet de test de sorte que lorsque vous appuyez sur F5 (Démarrer le débogage) ou Ctrl-F5 (Démarrer sans débogage), il lance automatiquement l’interface utilisateur graphique NUnit et exécute tous les tests qu’il contient. Si des points d'arrêt sont touchés, vous pourrez également déboguer votre code de test.

Un guide étape par étape avec des images vous montre exactement comment procéder.

_ {La paresse est la mère de toute invention :-)

41
Robert Koritnik

Si vous utilisez NUnit 2.4, vous pouvez insérer le code suivant dans votre SetUpFixture class. (Vous pouvez le faire avec des versions plus anciennes, mais vous devrez faire l’équivalent de la variable SetUpFixture ou 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() do entraîne 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.

5
Scott Chamberlain

Regardez NHarness sur CodePlex

Il s'agit d'une bibliothèque d'exécution de test très simple, basée sur la réflexion, qui reconnaît les attributs NUnit et peut être exécutée à partir d'un projet dans Visual Studio Express, permettant ainsi le test de débogage.

Il a actuellement une granularité au niveau de la classe de test, mais les appels au niveau de la méthode sont censés être bientôt ajoutés.

0
johnc

Avait le même problème avec NUnit 2.5.3 et a finalement trouvé une solution différente. Voyez si cela fonctionne pour vous:

Ouvrez l'interface graphique NUnit et ouvrez la boîte de dialogue Paramètres ... du menu Outils. Sélectionnez la sous-section Assembly Isolation de la section Test Loader dans l’arborescence Paramètres. Définissez le modèle de processus par défaut sur Exécuter les tests séparément dans le processus NUnit.

Je l'avais paramétré sur Exécuter les tests dans un seul processus, ce qui explique pourquoi le débogueur ne pouvait pas lier ma DLL sous test aux symboles de débogage. J'utilise toujours Utiliser un sperate AppDomain par assembly pour mon utilisation de domaine par défaut.

0
James