Traçage et débogage du code dans les tests unitaires

Je n’ai pas été en mesure de déboguer ou de parcourir les tests unitaires.

Voici mon exemple de code de test …

using System; using System.Text; using System.Collections.Generic; using System.Linq; using Microsoft.VisualStudio.TestTools.UnitTesting; using DomainModel.Entities; using DomainModel.Abstract; using WebUI.Controllers; namespace Tests { [TestClass] public class PeopleControllerTests { static IPeopleRepository MockPeopleRepository(params Person[] people) { var mockPeopleRepos = new Moq.Mock(); mockPeopleRepos.Setup(x => x.People).Returns(people.AsQueryable()); return mockPeopleRepos.Object; } [TestMethod] public void Count_Of_People() { IPeopleRepository repository = MockPeopleRepository( new Person { Age = 31, Gender = "Male", Name = "Tom" }, new Person { Age = 25, Gender = "Female", Name = "Sally" }, new Person { Age = 18, Gender = "Female", Name = "John" } ); PeopleController controller = new PeopleController(repository); var people = controller.List().ViewData.Model; var peoplelist = people as IList; Assert.AreEqual(3, peoplelist.Count); } } } 

    Lorsque vous utilisez Microsoft.VisualStudio.TestTools.UnitTesting, accédez à «Test» dans le menu principal de VS 2010, cliquez sur le sous-menu ‘Debug’ -> ‘tests dans le contexte actuel’.

    En cliquant avec le bouton droit sur le code de test et en sélectionnant «Exécuter les tests», le débogueur ne démarrera jamais, même si mode = debug.

    Il est beaucoup plus simple dans VS 2013, dans Test Explorer de sélectionner des tests que vous souhaitez déboguer, cliquez avec le bouton droit de la souris et choisissez les tests sélectionnés pour le débogage.

    entrer la description de l'image ici

    Oui tu peux, merci 🙂

    Cependant, pour les casser, vous devez exécuter vos tests unitaires en mode Debug.

    Si vous nunit , c’était si facile:

    1. Exécutez nunit et ouvrez l’assemblage souhaité.
    2. Ouvrez Visual Studio -> Debug -> Attacher au processus …
    3. Sélectionnez le processus de nunit
    4. Mettez le point d’arrêt dans chaque ligne que vous voulez.
    5. Retournez à la nunit et lancez des tests
    6. Vous verrez que l’exécution s’arrête aux points d’arrêt

    Peut-être que le simple fait de déboguer des tests et de définir des points d’arrêt fonctionne dans certains types de tests unitaires, mais ce n’est pas le cas si vous déboguez, par exemple, un service Web.

    Pour déboguer un service Web (pause dans un test unitaire), vous devez insérer ce code:

     System.Diagnostics.Debugger.Break(); 

    Cela affichera une fenêtre indiquant que l’application a cessé de fonctionner et que vous pouvez choisir de la déboguer.

    Plus ici: http://msdn.microsoft.com/en-us/library/ms243172.aspx#DebuggingOnCassini

    Une autre solution…

    Vous devez exécuter et attacher le débogueur

    Définissez cette ligne à la première ligne exécutée dans votre test (peut-être dans le constructeur de la classe de test)

     System.Diagnostics.Debugger.Launch(); 

    alors quand la fenêtre de débogage ouverte, a choisi le stdio visuel

    Une option consiste à installer TestDriven.net, ce qui facilite l’exécution des tests unitaires sur les principaux environnements .net (unités nunit, xunit, VS, etc.). Une fois installé, vous pouvez cliquer avec le bouton droit sur une fonction et choisir Test With -> debugger.