2010-11-05 4 views
32

Je n'ai pas été capable de déboguer ou de passer le test unitaire.Passage et débogage du code dans les tests unitaires

Voici mon code de test d'échantillon ...

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<IPeopleRepository>(); 
      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<Person>; 
      Assert.AreEqual(3, peoplelist.Count); 
     } 

    } 
} 
+3

Vous voulez dire en plus en cliquant à droite de la ligne, ou faites un clic droit breakpoint -> Insérer point d'arrêt? –

Répondre

64

Lorsque vous utilisez Microsoft.VisualStudio.TestTools.UnitTesting, allez à 'Test' dans le menu principal de VS 2010, cliquez sur le sous-menu 'Debug' - 'essais dans le contexte actuel'>.

Un clic droit sur le code de test et en sélectionnant «Exécuter des tests» ne lancera jamais le débogueur, même si mode = déboguer.

+4

Dans VS2012, nous pouvons faire du débogage pas à pas en plaçant un point de rupture dans une méthode de test spécifique. Après aller à 'Menu> Test> Déboguer> Tests sélectionnés ou tous les tests'. Non, vous devriez pouvoir déboguer. Juste une mise à jour :) – RajeshKdev

+2

En plus du commentaire de @ RJK, il s'agit également des mêmes étapes pour passer des tests dans VS 2013 (ou utiliser Ctrl + T) –

+0

^Même dans VS 2015 –

0

Une option consiste à installer TestDriven.net ce qui le rend plus facile à exécuter des tests unitaires sur l'un des principaux tests unitaires cadres de .net (nunit, xUnit, VS outils, etc.). Une fois installé, vous pouvez faire un clic droit sur une fonction et choisir Test avec -> débogueur.

10

Oui vous pouvez, merci :)

Pour rompre réellement sur eux, vous devez exécuter vos tests unitaires en mode débogage bien.

+5

Menu> Test> Débogage> Tests dans le contexte actuel (Ctrl + R, Ctrl + T dans VS 2010) – Jonathan

+0

Cette réponse manque de suffisamment de détails. Pouvez-vous fournir des instructions spécifiques? Est-ce différent des autres réponses? – DaveInCaz

3

Si vous utilisez nunit, qui était si facile:

  1. Run nunit et ouvrez votre assemblage souhaité en elle.
  2. visual studio ouvert -> Debug -> Attacher au processus ...
  3. processus Sélection de nunit
  4. point de rupture Put dans chaque ligne que vous voulez.
  5. Retour à nunit et exécuter des tests
  6. Vous verrez que l'exécution des arrêts aux points de rupture
+1

merci! nunit-agent.exe pour moi. – CaRDiaK

3

Peut-être que le débogage simplement des tests et la mise en points d'arrêt des travaux dans certains types de tests unitaires, mais il ne fonctionne pas si vous debug par exemple Service Web.

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

System.Diagnostics.Debugger.Break(); 

Cela montrera une fenêtre contextuelle dire l'application a cessé de fonctionner et vous pouvez choisir de le déboguer.

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

3

Une autre solution ...

Vous devez exécuter et attacher le débogueur

Réglez 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(); 

puis lorsque la fenêtre de débogage est ouverte, choisissez la stdio visuelle

+2

Pourquoi avez-vous répondu à un post de 4 ans avec une réponse qui est fondamentalement identique à une autre réponse? –

9

C'est beaucoup plus simple dans VS 2013, dans Test Explorer, sélectionnez les tests que vous souhaitez déboguer, faites un clic droit et choisissez de tests sélectionnés par bogue.

enter image description here