visual unit tests test studio generate ejemplo basics visual-studio-2010 visual-studio unit-testing mstest

visual-studio-2010 - ejemplo - visual studio generate unit tests



Error de VS 2010 Test Runner "El proceso del agente se detuvo mientras se ejecutaba la prueba". (17)

En Visual Studio 2010, tengo una serie de pruebas unitarias. Cuando ejecuto múltiples pruebas al mismo tiempo usando listas de prueba, a veces reveo el siguiente error para una o más de las pruebas:

El proceso del agente se detuvo mientras se ejecutaba la prueba.

Nunca es la misma prueba que falla, y si trato de ejecutar la prueba nuevamente, tiene éxito.

Encontré este informe de error en Connect , que parece ser el mismo problema, pero no ofrece una solución.

¿Alguien más ha visto este comportamiento? ¿Cómo puedo evitarlo?

Editar

Todavía estoy experimentando este error, al igual que muchos de mis colegas en la misma configuración de software / hardware. He evaluado las respuestas hasta el momento, pero no resuelven el problema. Estoy empezando una recompensa por una solución a este problema.


Añadí bloques try / catch al descructor ~ ClassName () {} que se definieron en cualquier clase involucrada en mis pruebas. Esto solucionó el problema para mí.

~MyClass() { try { // Some Code } catch (Exception e) { // Log the exception so it''s not totally hidden // Console.WriteLine(e.ToString()); } }


Acabo de experimentar el problema similar: algunas pruebas fallan y son diferentes en diferentes ejecuciones de prueba. No sé exactamente la razón por la que sucede, pero comenzó a ocurrir cuando agregué un finalizador a una de mis clases. Cuando desactivo el finalizador, el problema desaparece. Cuando enciendo el finalizador, el problema vuelve.

En este momento no sé cómo superar esto.


Como este error puede tener muchas causas diferentes, me gustaría agregar otro para completar este hilo.

Si todas sus pruebas se cancelan según lo descrito por el OP, la causa podría ser una configuración de proyecto incorrecta. En mi caso, el marco de destino se estableció en .NET Framework 3.5. Al establecerlo en una versión más alta a través de la página de propiedades del proyecto (pestaña Aplicación ) se resolvió el problema.


El problema también puede ser desencadenado por una excepción o un en el Constructor de una TestClass.


En mi caso, la solución se resolvió verificando la Ventana de Salida .

''QTAgent32.exe'' (Administrado (v4.0.30319)): cargado ''C: / TestResults / bdewey_XXXXXX072 2011-01-11 17_00_40 / Out / MyCode.dll'', símbolos cargados. E, 9024, 9, 2011/01/11, 17: 00: 46.827, XXXXX072 / QTAgent32.exe, excepción no controlada capturada, informe a través de Watson: [mensaje de excepción]

En mi caso, tenía un FileSystemWatcher que arrojaba un error en un hilo separado.


En mi caso, tuve algunas pruebas de unidad para un servicio WCF. Este servicio WCF estaba iniciando 2 temporizadores.
Esos temporizadores causaron efectos secundarios.
-> Deshabilito estos temporizadores por defecto y todo está bien!

Por cierto: utilizo WCFMock para falsificar el servicio WCF, así que tengo pruebas de unidad "reales" alrededor de mi servicio WCF


Encontré el mismo problema y lo resolví mientras quitaba

Environment.Exit(0);

Así que estoy bastante seguro de que este error ocurre mientras la prueba o el método bajo prueba hacen que finalice el proceso de ejecución.


Estaba teniendo este problema, y ​​resultó ser un problema en mi código que Test Framework no estaba captando correctamente. Una pequeña refacturación accidental me había dejado con este código:

public void GetThingy() { this.GetThingy(); }

Esto es, por supuesto, una recursión infinita, y causó una Exception (supongo). Lo que esto causó fue lo temido: "El proceso del agente se detuvo mientras se ejecutaba la prueba".

Una rápida inspección del código me mostró el problema, y ​​mis pruebas ahora están funcionando bien. Espero que esto ayude; podría valer la pena inspeccionar el código buscando problemas, o tal vez extraer un poco de una aplicación de consola y verificar que funcione correctamente allí.


Este error fue causado por un Finalizer para mí también.
El Finalizador estaba llamando a un código DB que no fue burlado. Me tomó un tiempo encontrarlo, ya que no era una clase que escribí y la referencia a ella estaba llena de profundas profundidades.


Este mensaje es causado por una excepción en un hilo diferente del hilo de prueba en ejecución . Todas las respuestas hasta ahora se reducen a esta simple explicación. Es un error conocido en Visual Studio no mostrar información sensible en ese caso.

El examinador de prueba de Visual Studio se ahoga por completo si un hilo que no sea el hilo de prueba arroja una excepción: se lo traga y no hay salida, no hay posibilidad de interceptar y depurar y no hay nada excepto un lío ardiente y quemado que supuestamente era su unidad prueba.


Este mensaje generalmente se genera cuando el proceso de prueba falla y puede ocurrir cuando hay una excepción no controlada en una cadena de fondo, se produce un desbordamiento de la pila o una llamada explícita a Process.GetCurrentProcess().Kill() o Environment.Exit . Otra posible causa es una infracción de acceso en código no administrado.

Algo que nadie ha mencionado es que puede haber información adicional en el registro de eventos. Por lo general, no obtendrá mucha información sobre por qué la prueba se bloqueó en los resultados; sin embargo, en el caso de una excepción no controlada en una cadena de fondo, la estructura de prueba escribe detalles en el registro de eventos de la aplicación con la ejecución VSTTE de origen. Si no hay información escrita en el registro de eventos, es probable que sea una de las otras causas enumeradas anteriormente.


Gracias por publicar la pregunta. Me encontré con este problema y descubrí una causa con la que te puedes encontrar.

Puede haber ocurrido una excepción asincrónica

Durante la configuración de la prueba, creo un objeto que pone en cola un hilo de trabajo en el grupo de subprocesos. Si corro a través de la depuración lo suficientemente rápido, mi código pasa.

Si el hilo de trabajo se inicia y tiene un error ANTES de que se complete la configuración de la prueba, obtengo un resultado de Aborted sin ningún razonamiento.

Si el hilo de trabajo se inicia y tiene un error DESPUÉS de que la prueba ha comenzado, entonces obtengo un resultado de: Error: el proceso del agente se detuvo mientras se ejecutaba la prueba.

Importante: este es un componente que utilizo en varias de mis pruebas. Si el marco de prueba encuentra demasiados de estos errores, aborta el resto de las pruebas.

Espero que esto ayude


He tenido esto sucediendo en alguna ocasión, y el culpable casi siempre resulta estar enhebrado.

Curiosamente, todas las pruebas funcionarían bien en las máquinas de desarrollo, luego fallarían aleatoriamente en los servidores de compilación.

En una inspección más cercana, resultó que, aunque las pruebas se enumeraban como aprobadas en los cuadros dev, se producían excepciones. Las excepciones se lanzaron en un hilo separado que no se recogió como un error.

Los detalles de la excepción se registraban en el seguimiento de la prueba, por lo que pudimos identificar qué código / pruebas se necesitaban modificar.

Espero que esto ayude a alguien.


Me encontré con un problema similar cuando una prueba falla en TestInitialize y también está ejecutando código de un ddl de otro de mis proyectos. Recibo el mensaje de error como se describió anteriormente y si trato de depurar la prueba, la prueba se cancela sin ningún detalle de excepción.

Sospecho que el problema puede ser que los dlls de mi otro proyecto son de un proyecto de Visual Studio 2012 y estoy ejecutando mis pruebas en un proyecto VS2010, y / o posiblemente las versiones dll UnitTestFramwork de los 2 proyectos no coinciden.


Para saber dónde se lanzó la excepción, haga clic en el hipervínculo "Probar error de ejecución" junto al icono de exclamación en la ventana Resultados de la prueba. Se abre una ventana con el rastro de la pila.

¡Esto ayuda mucho a rastrear el error!


Pude encontrar el origen de mi problema al buscar en el archivo de resultados de la prueba (/TestResults/*.trx) Proporcionó todos los detalles de la excepción que ocurrió en el hilo de fondo, y una vez que resolví esa excepción, el "agente procesado" parado ... "el error desapareció.

En mi caso, inicié involuntariamente la GUI en mi prueba unitaria, lo que eventualmente hizo que se lanzara una System.ComponentModel.InvalidAsynchronousStateException.

Entonces mi archivo .trx contenía:

<RunInfo computerName="DT-1202" outcome="Error" timestamp="2013-07-29T13:52:11.2647907-04:00"> <Text>One of the background threads threw exception: System.ComponentModel.InvalidAsynchronousStateException: An error occurred invoking the method. The destination thread no longer exists. at System.Windows.Forms.Control.WaitForWaitHandle(WaitHandle waitHandle) at System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous) at System.Windows.Forms.Control.Invoke(Delegate method, Object[] args) at System.Windows.Forms.Control.Invoke(Delegate method) ... </Text> </RunInfo>

Esto no proporcionó ninguna información sobre qué prueba causó el error, pero sí me mostró dónde estaba la excepción, lo cual fue muy útil.


Tuve el mismo problema y fue causado por un finalizador para un recurso no administrado (un escritor de archivos que por algún motivo no se eliminaba correctamente).

Después de ajustar el código del finalizador en un try-catch que se traga la excepción, el problema desapareció. No recomiendo tragar excepciones como esa, por lo que obviamente sería prudente averiguar por qué se produce la excepción en primer lugar.