Tengo un proyecto de prueba en Visual Studio. Yo uso Microsoft.VisualStudio.TestTools.UnitTesting .
Agrego esta línea en una de mis pruebas unitarias:
Console.WriteLine("Some foo was very angry with boo");
Console.ReadLine();
Cuando ejecuto la prueba, la prueba pasa, pero la ventana de la consola no se abre en absoluto.
¿Hay alguna manera de hacer que la ventana de la consola esté disponible para interactuar a través de una prueba unitaria?
c#
.net
visual-studio
unit-testing
console-application
lápiz de pastel
fuente
fuente
Dump
método de extensión que genera el contenido del objeto en la consola, lo que hace que las cosas sean mucho más fáciles de depurar. i.imgur.com/MEZwy7X.pngRespuestas:
NOTA: La respuesta original a continuación debería funcionar para cualquier versión de Visual Studio hasta Visual Studio 2012. Visual Studio 2013 ya no parece tener una ventana de Resultados de prueba. En cambio, si necesita resultados específicos de la prueba, puede usar la sugerencia de @ Stretch de
Trace.Write()
escribir resultados en la ventana Resultados.El
Console.Write
método no escribe en la "consola": escribe en lo que esté conectado al controlador de salida estándar para el proceso en ejecución. Del mismo modo,Console.Read
lee la entrada de lo que esté conectado a la entrada estándar.Cuando ejecuta una prueba unitaria a través de Visual Studio 2010, el arnés de prueba redirige la salida estándar y se almacena como parte de la salida de prueba. Puede ver esto haciendo clic con el botón derecho en la ventana Resultados de la prueba y agregando la columna denominada "Salida (StdOut)" a la pantalla. Esto mostrará todo lo que se escribió en la salida estándar.
Usted podría abrir manualmente una ventana de la consola, utilizando P / Invoke como dice sinni800 . Al leer la
AllocConsole
documentación, parece que la función se restablecerástdin
y sestdout
manejará para apuntar a la nueva ventana de la consola. (No estoy 100% seguro de eso; me parece un poco incorrecto si ya he redirigidostdout
para que Windows me lo robe, pero no lo he intentado).En general, sin embargo, creo que es una mala idea; si todo lo que desea usar para la consola es volcar más información sobre la prueba de su unidad, la salida está ahí para usted. Siga utilizando
Console.WriteLine
la forma en que está y compruebe los resultados de salida en la ventana Resultados de la prueba cuando haya terminado.fuente
AllocConsole
documentación, puede que sea incorrecta, pero tendría que probarla.Alguien comentó sobre esta funcionalidad aparentemente nueva en Visual Studio 2013. No estaba seguro de lo que quería decir al principio, pero ahora que lo hago, creo que merece su propia respuesta.
Podemos usar Console.WriteLine normalmente y la salida se muestra, no solo en la ventana Salida, sino en una nueva ventana después de hacer clic en "Salida" en los detalles de la prueba.
fuente
Puede usar esta línea para escribir en la ventana de salida de Visual Studio:
Debe ejecutarse en modo de depuración.
fuente
Como se indicó, las pruebas unitarias están diseñadas para ejecutarse sin interacción.
Sin embargo, puede depurar pruebas unitarias, como cualquier otro código. La forma más fácil es usar el Debugbotón en la pestaña Resultados de la prueba.
Poder depurar significa poder usar puntos de interrupción. Ser capaz de usar puntos de interrupción, entonces, significa poder usar Tracepoints , lo que encuentro extremadamente útil en la depuración diaria.
Esencialmente, los puntos de seguimiento le permiten escribir en la ventana Salida (o, más exactamente, en la salida estándar). Opcionalmente, puede continuar ejecutándose o puede detenerse como un punto de interrupción normal. Esto le brinda la "funcionalidad" que está solicitando, sin la necesidad de reconstruir su código o llenarlo con información de depuración.
Simplemente agregue un punto de interrupción y luego haga clic derecho en ese punto de interrupción. Seleccione la opción "Cuando se golpea ...":
Lo que abre el diálogo:
Algunas cosas a tener en cuenta:
Consulte la documentación para más detalles.
fuente
Hay varias formas de escribir la salida de una prueba de unidad de Visual Studio en C #:
Confirmado en Visual Studio 2013 Professional.
fuente
Puedes usar
escribir en la ventana Salida al depurar una prueba unitaria.
fuente
En Visual Studio 2017, "TestContext" no muestra el enlace de salida en Test Explorer.
Sin embargo, Trace.Writeline () muestra el enlace Salida.
fuente
En primer lugar , se supone que , por diseño , las pruebas unitarias se ejecutan completamente sin interacción.
Con eso a un lado, no creo que haya una posibilidad que se haya pensado.
Podría intentar hackear con AllocConsole P / Invoke, que abrirá una consola incluso cuando su aplicación actual sea una aplicación GUI. La
Console
clase luego publicará en la consola ahora abierta.fuente
Debug.WriteLine () también se puede usar.
fuente
En mi humilde opinión, los mensajes de salida son relevantes solo para casos de prueba fallidos en la mayoría de los casos. Creé el siguiente formato, y tú también puedes hacer el tuyo. Esto se muestra en la ventana del Visual Studio Test Explorer.
¿Cómo podemos lanzar este mensaje en la ventana de Visual Studio Test Explorer?
Un código de muestra como este debería funcionar:
Puede tener una clase separada dedicada a esto para usted.
fuente
Tengo una solución más fácil (que utilicé recientemente, por muchas razones flojas). Agregue este método a la clase en la que está trabajando:
Entonces ... abra el directorio AdHocConsole, y ordene por tiempo creado. Asegúrese de agregar sus "declaraciones de impresión". Sin embargo, son distintos, de lo contrario habrá malabares.
fuente
Visual Studio para Mac
Ninguna de las otras soluciones funcionó en Visual Studio para Mac
Si está utilizando NUnit , puede agregar un pequeño
.NET
proyecto de consola a su solución y luego hacer referencia al proyecto que desea probar en las referencias de ese nuevo proyecto de consola .Lo que estaba haciendo en sus
[Test()]
métodos se puede hacer en laMain
aplicación de consola de esta manera:Usted es libre de usar
Console.Write
yConsole.WriteLine
en su código bajo estas circunstancias.fuente