¿Hay alguna manera de mostrar el progreso de un solo TestMethod en Visual Studio 2008?¿Es posible mostrar el progreso durante la ejecución de un Visual Studio TestMethod?
Dentro de un conjunto de pruebas unitarias, tengo un único TestMethod que funciona durante mucho, mucho tiempo, normalmente tomará entre 30 y 60 minutos. Establecí el Tiempo de espera utilizando el atributo [Tiempo de espera], no hay problema allí. Pero me gustaría poder obtener una indicación visual del progreso de la prueba.
Sé que la ventana Resultados de la prueba proporciona una actualización del progreso visual de todos los métodos de prueba. Lo que quiero es una actualización de progreso visual de un único método. En una aplicación WinForms, mostraría un control ProgressBar. En una aplicación de consola, colocaría el cursor y mostraría un mensaje de estado. Pero esta es una prueba unitaria. Puedo escribir en TestContext, pero esa ventana no se puede ver hasta que finalice la prueba.
EDITAR: Sé que hay una manera de hacerlo; todo es solo software, entonces siempre hay una manera. Pero, ¿qué es una manera simple y práctica?
Una forma de hacerlo es crear una aplicación TestMethodProgressMonitor.exe, que se lee desde una tubería con nombre, y actualiza una barra de progreso en función de los mensajes que llegan a través de la tubería. TestMethod puede ejecutar ShellExec TestMethodProgressMonitor.exe, luego escribir en la tubería con nombre. Cuando termine, tal vez haya un comando de apagado conocido que TestMethod envía a la aplicación TestMethodProgressMonitor.exe.
Otra opción es construir TestMethodProgressMonitor.exe como un servidor COM, y TestMethod puede usar COM (DCOM) para actualizar una barra de progreso alojada dentro de la aplicación.
Otra opción es utilizar el método SendMessage() de user32.dll para enviar un mensaje WM_COPYDATA a la aplicación del monitor. Esto a veces se hace para el control remoto de aplicaciones.
Esas son algunas de las posibilidades. Antes de comenzar a construir uno de ellos, me gustaría saber si hay una manera más simple.
una prueba unitaria que toma tanto tiempo, no es una prueba unitaria por definición. ¿Qué causa que tome tanto tiempo? –
Es una prueba de crear un archivo ZIP64; La prueba encripta un conjunto de archivos que dan como resultado un archivo zip de más de 4 gb. Luego, el archivo zip se actualiza y se guarda de nuevo (dos veces). El código tiene alrededor de 5 líneas rodeadas por un bucle. Pero hay muchas E/S y mucha DEFLATE. ¿De verdad estás diciendo que la definición de prueba unitaria incluye un límite de tiempo? ¿Cuál es el límite de tiempo? – Cheeso