Pregunta

Estoy tratando de usar TestDriven.Net no solo para probar mi código, sino para llamar a una función de mi código cuyo propósito es imprimir el estado interno del código en la ventana de depuración.

Aquí hay un ejemplo muy simplificado de lo que estoy tratando de hacer ...

<TestFixture()> _
Public Class UnitTest

    <Test()> _
    Public Sub TestDebug()
        Dim oClass1 As New Class1

        Assert.AreEqual(True, oClass1.IsTrue)

        Debug.WriteLine("About to call .PrintDebug()")
        oClass1.PrintToDebug()

    End Sub

End Class

Public Class Class1

    Private _IsTrue As Boolean = True

    Public ReadOnly Property IsTrue() As Boolean
        Get
            Return _IsTrue
        End Get
    End Property

    Public Sub PrintToDebug()
        Debug.WriteLine("Internal state of Class1: " & _IsTrue)
    End Sub

End Class

Estoy intentando probar la interfaz pública de Class1 y, de alguna manera, ver el resultado de la función Class1.PrintToDebug () .

He revisado el TestDriven.Net quickstart , que muestra ejemplos de cómo usar el Debug.WriteLine en una prueba de unidad, pero extrañamente esto tampoco funciona para mí, es decir, la única Salida en mi ventana 'Prueba' es:

------ Test started: Assembly: ClassLibrary1.dll ------


1 passed, 0 failed, 0 skipped, took 1.19 seconds.

He intentado buscar en las otras ventanas (depurar y compilar), la ventana de depuración tiene habilitadas las opciones "Salida del programa" y "Mensajes de excepción".

He buscado opciones o preferencias y no puedo encontrar ninguna.

¡Gracias por tu ayuda!


Editar: Estoy usando VB.Net 2.0, TestDriven.Net 2.14.2190 y NUnit 2.4.8.0

¿Fue útil?

Solución

Encontré que mientras Debug.Writeline () no funciona con pruebas unitarias, Console.WriteLine () sí lo hace.

El motivo es que cuando se ejecutan pruebas, el proceso del depurador no se invoca y Debug.WriteLine () se ignora. Sin embargo, si usas "Test with Debugger", creo que (no lo he intentado) Debug.WriteLine () funcionará.

Otros consejos

Trace.WriteLine() parece ser la respuesta: o)

Aquí está el resultado para el ejemplo de mi pregunta, utilizando Trace en lugar de Debug :

------ Test started: Assembly: ClassLibrary1.dll ------

Internal state of Class1: True

1 passed, 0 failed, 0 skipped, took 0.61 seconds.
Sin embargo, una cosa que he encontrado ... la ejecución se detiene en la primera afirmación de prueba de unidad que falla, lo que significa que las declaraciones de Trace no se ejecutan si un Assert () por encima de ellos falla.

Intente usar Trace.WriteLine (...) en su lugar. La llamada a Debug.WriteLine (...) solo se realizará cuando se defina DEBUG. Por defecto, los nuevos proyectos de Visual Studio ya no definen DEBUG, pero sí definen TRACE.

Realmente debería cambiar el ejemplo de inicio rápido para usar Trace en su lugar.

Saludos, Jamie.

Es posible que desee saber que la versión 2.16 (la versión beta actual) incluye:

  

1587: mostrar siempre la consola   Mensajes de salida / error y corredor de prueba

     

Los mensajes generados por el corredor de prueba y   Ahora se mostrará la salida de la consola   cuando se ejecutan todas las pruebas en una   proyecto / solución.

     

1588: opcionalmente mostrar seguimiento / depuración   salida al ejecutar todas las pruebas en   proyecto / solución

     

Por defecto, la salida de seguimiento / depuración no es   se muestra al ejecutar todas las pruebas en   Un proyecto / solución. Este comportamiento puede   ser modificado a través de la TesDriven.Net   panel de opciones.

Parece que funcionará en la próxima versión.

IIRC, esta salida solo se muestra en la ventana de salida cuando se ejecuta una prueba individual. Intente hacer clic derecho en el método de prueba para ejecutar solo esa prueba ...

" Ejecutar pruebas ... " recoge cualquier configuración que tenga actualmente para construir su solución / proyecto.

Debe asegurarse de que la configuración de compilación actual para su solución / proyecto esté establecida en " Depurar " y no a " Liberar " (de lo contrario, las llamadas Debug.Write * () son condicionalmente eliminado por el compilador).

CTRL + ALT + I te muestra la ventana inmediata

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top