2010-11-05 14 views
32

No he podido depurar ni pasar por la prueba unitaria.Paso a paso y código de depuración en Pruebas unitarias

Aquí está mi código de prueba de muestra ...

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

decir aparte de hacer clic a la derecha de la línea, o haga clic derecho punto de interrupción -> punto de interrupción de inserción? –

Respuesta

64

Al utilizar Microsoft.VisualStudio.TestTools.UnitTesting, vaya a 'Test' en el menú principal de VS 2010, haga clic en el submenú 'depuración' - 'en las pruebas contexto actual'>.

Al hacer clic derecho en el código de prueba y seleccionar 'ejecutar pruebas' nunca se iniciará el depurador, ni siquiera cuando mode = depuración.

+4

En 'VS2012' Podemos hacer depuración paso a paso al poner un' Punto de corte en un método de prueba específico'. Después, vaya a 'Menú> Prueba> Depurar> Pruebas seleccionadas o Todas las pruebas'. No deberías poder depurar. Solo una actualización :) – RajeshKdev

+2

Además del comentario de @RJK, estos son también los mismos pasos para pasar las pruebas en VS 2013 (o usar 'Ctrl + T') –

+0

^Lo mismo en VS 2015 –

0

Una opción es instalar TestDriven.net que hace que sea más fácil para ejecutar pruebas unitarias en cualquiera de los principales marcos de las pruebas unitarias .net (nunit, xUnit, VS herramientas, etc.). Una vez instalado, puede hacer clic con el botón derecho en una función y seleccionar Probar con -> depurador.

10

Sí se puede, gracias :)

Para romper realmente en ellos es necesario ejecutar las pruebas unitarias en modo de depuración sin embargo.

+5

Menú> Prueba> Depurar> Pruebas en contexto actual (Ctrl + R, Ctrl + T en VS 2010) – Jonathan

+0

Esta respuesta carece de suficientes detalles. ¿Puedes proporcionar instrucciones específicas? ¿Es esto diferente de las otras respuestas? – DaveInCaz

3

Si se ejecuta nunit, que era tan fácil:

  1. Run nunit y abrir su montaje deseada en ella.
  2. Abra Visual Studio -> Depuración -> Asociar al proceso ...
  3. Seleccionar proceso de nunit
  4. punto de ruptura poner en cada línea que desee.
  5. Volver a nunit y ejecutar pruebas
  6. verá que la ejecución se detiene en los puntos de quiebre
+1

gracias! nunit-agent.exe para mí. – CaRDiaK

3

Tal vez simplemente la depuración de las pruebas y el establecimiento de puntos de interrupción funciona en algunos tipos de pruebas unitarias pero no es así si depuración p.ej Servicio web.

Para depurar un servicio Web (ruptura dentro de una Unidad de prueba) que tiene que insertar este código:

System.Diagnostics.Debugger.Break(); 

Esto mostrará una ventana emergente diciendo que la aplicación ha dejado de funcionar y se puede elegir para depurarlo.

Más aquí: http://msdn.microsoft.com/en-us/library/ms243172.aspx#DebuggingOnCassini

3

Otra solución ...

necesita ejecutar y adjuntar el depurador

Establecer esta línea en la primera línea ejecutada en su prueba (tal vez en el constructor de la clase de prueba)

System.Diagnostics.Debugger.Launch(); 

luego, cuando la ventana de depuración se abre, elija el stdio visual

+2

¿Por qué respondiste a una publicación de 4 años con una respuesta que es básicamente idéntica a otra respuesta? –

9

Es mucho más simple en VS 2013, en Test Explorer seleccione las pruebas que desea depurar, haga clic con el botón derecho y elija error seleccionado pruebas.

enter image description here

Cuestiones relacionadas