Je n'ai pas pu déboguer ni passer par le test unitaire.
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<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);
}
}
}
Lorsque vous utilisez Microsoft.VisualStudio.TestTools.UnitTesting, allez dans 'Test' dans le menu principal de VS 2010, cliquez sur le sous-menu 'Debug' -> 'tests dans le contexte actuel'.
Cliquer avec le bouton droit sur le code de test et sélectionner "exécuter les tests" ne démarrera jamais le débogueur, pas même lorsque mode = debug.
Oui, merci :)
Pour réellement les casser, vous devez cependant exécuter vos tests unitaires en mode débogage.
Peut-être que le débogage de tests et la définition de points d'arrêt fonctionnent dans certains types de tests unitaires, mais ce n'est pas le cas si vous déboguez, par exemple Service Web.
Pour déboguer un service Web (interrompre un test unitaire), vous devez insérer ce code:
System.Diagnostics.Debugger.Break();
Cela affichera une fenêtre contextuelle 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();
puis lorsque la fenêtre de débogage est ouverte, choisissez le stdio visuel
Si vous exécutiez nunit
, c'était si simple:
nunit
et ouvrez-y l'assembly souhaité.nunit
nunit
et exécutez les testsUne option consiste à installer TestDriven.net qui facilite l'exécution de tests unitaires sur l'un des principaux frameworks de test unitaire .net (nunit, xunit, VS tools, etc.). Une fois installé, vous pouvez cliquer avec le bouton droit sur une fonction et choisir Tester avec -> débogueur.