Contexto:
algunos usuarios informan problemas con una función de carga de archivos en nuestra aplicación web. Solo ocurre ocasionalmente y sin ningún patrón especial. Hemos estado tratando de resolverlo durante mucho tiempo, agregando información de depuración en cualquier lugar donde creamos que podría ayudar, rastreando los registros, etc., pero no hemos podido reproducirlo o resolverlo.
Problema:
ahora estoy tratando de reproducir esto usando MSTest y WatiN para repetir la operación que se supone falla una gran cantidad de veces (varios cientos). Solo para tener una idea de qué tan lejos en el ciclo ha llegado la prueba, quiero imprimir algo como:
Console.WriteLine(String.Format("Uploaded file, attempt {0} of {1}", i, maxUploads));
Sin embargo, esto no aparece en la ventana Salida. Ahora sé que obtendrá la salida de la consola en los resultados de la prueba (así como lo que la salida del Debug.Writeline
etc), pero esto no está disponible hasta después de la prueba ha terminado. Y dado que mi prueba con cientos de repeticiones puede llevar bastante tiempo, me gustaría saber qué tan lejos ha llegado.
Pregunta:
¿Hay alguna forma de que pueda obtener la salida de la consola en la ventana Salida durante la ejecución de la prueba?
Respuestas:
La salida de la consola no aparece porque el código de backend no se está ejecutando en el contexto de la prueba.
Probablemente sea mejor usar
Trace.WriteLine
(In System.Diagnostics) y luego agregar un detector de seguimiento que escribe en un archivo.Este tema de MSDN muestra una forma de hacerlo.
Según los comentarios de Marty Neal y Dave Anderson:
fuente
Trace.Listeners.Add(new TextWriterTraceListener(Console.Out));
Trace.WriteLine("Hello World");
Trace.WriteLine()
y laConsole.WriteLine()
salida a la Vista de resultados de la prueba , no a la Vista de salida . (Y tenga en cuenta que en la Vista de resultados de la prueba , puede ser necesario agregar la columna Salida (Stdout) haciendo clic con el botón derecho y seleccionando Agregar / Eliminar columnas ... ). Pero, quizás todavía no veo la salida en la Salida Ver significa que me falta algo ...Trace.Listeners.Add(new ConsoleTraceListener());
es suficiente y luego muestra la salida de Debug en la ventana de salida.Utilice el
Debug.WriteLine
. Esto mostrará su mensaje en laOutput
ventana inmediatamente. La única restricción es que debe ejecutar su prueba enDebug
modo.Salida
fuente
using System.Diagnostics;
Encontré una solución propia. Sé que la respuesta de Andras es probablemente la más consistente con MSTEST, pero no tenía ganas de refactorizar mi código.
El desechable
ConsoleRedirector
se define como:fuente
Tuve el mismo problema y estaba "ejecutando" las pruebas. Si, en cambio, "depuro" las pruebas, la salida de depuración se muestra bien, como todos los demás, Trace y Console. Sin embargo, no sé cómo ver el resultado si "Ejecutas" las pruebas.
fuente
System.Diagnostics.Debug.WriteLine
mientras depuro las pruebas, pero ¿cómo se poneConsole.WriteLine
a trabajar? Esto no termina en la salida normal (actualizada en vivo) para mí.Es mejor que configure una única prueba y cree una prueba de rendimiento a partir de esta prueba. De esta forma, puede controlar el progreso utilizando el conjunto de herramientas predeterminado.
fuente