6

Estoy trabajando con MS-Test para escribir mi unidad de pruebas. la mayoría de mis pruebas tienen una duración de menos de 0.1 segundos. Quiero de alguna manera decirle a VS "ignorar las pruebas que tardan mucho tiempo en ejecutarse cuando estoy ejecutando las pruebas de forma manual, y cuando las ejecuta en la construcción no las ignore.Omitir pruebas de unidades que tarden mucho tiempo

Sé que en nunit hay es un atributo "explícita" que se ejecutará la prueba sólo si lo selecciona de forma explícita. Creo que podría ayudar, pero no estoy seguro.

Ayuda por favor

+0

¿Cuánto dura "un largo tiempo"? ¿No puedes hacer las pruebas más rápido? Es mucho mejor si puede ejecutar todas sus pruebas regularmente y que cada una de ellas se puede ejecutar rápidamente. De lo contrario, probablemente te olvides de ejecutar aquellos cuya duración es demasiado grande –

+0

Lo sé, pero las pruebas son buenas y quiero omitirlas de forma predeterminada cuando ejecuto la prueba de forma manual y dejar que el servidor las ejecute después de verificar. –

+0

Por ejemplo, una buena prueba que lleva mucho tiempo es una compilación en verificación de calibración para la elevación de eventos PropertyChanged que lleva 3 segundos. –

Respuesta

0

usted puede utilizar el atributo Timeout, y especificar el tiempo de espera en milisegundos Si el tiempo de espera pasa, la prueba falla.

0

Sí, como

<TestMethod(), Timeout(1000)> 
    Public Sub OutputWebservice_SubmitOutputJob_SubmitEmailJobHF001() 
    End Sub 
+0

Pero no quiero que la prueba falle, solo quiero omitirla automáticamente en mi máquina cliente. La prueba está bien –

+0

sería clase como timeout no es una falla – Iain

+0

OK, pero lleva mucho tiempo, digamos que recibí 1000 pruebas unitarias y 100 de ellas son pruebas largas, y el tiempo de espera es de 1 segundo, así que voy a grabar 2 minutos para nada? Estos 2 minutos harán que los desarrolladores salten la prueba de la unidad antes de la confirmación. –

2

Pensando en esta pregunta en un idioma agnóstica, rendimientos manner marco agnóstica que lo que pido es un poco un enigma:

El instrumento de medida no tendrá ninguna idea sobre el tiempo de ejecución de cualquiera de la unidad prueba hasta que se ejecuten; porque esto depende no solo de la herramienta de prueba y las pruebas en sí, sino también de la aplicación bajo prueba. La solución provisional para esto sería hacer cosas como establecer un límite de tiempo. Si haces esto, entonces surge la pregunta, cuando una prueba expira, ¿se debe pasar, fallar o tal vez pertenecer a alguna otra (tercera) categoría? ... ¡Enigma!

Por lo tanto, para evitar esto, sugiero que adopte una estrategia diferente en la que, como desarrollador, decida qué subconjuntos de todo el conjunto de pruebas desea ejecutar en diferentes situaciones. Por ejemplo:

  • Un conjunto de humo pruebas;
    • es decir, las pruebas que desea ejecutar primero todo el tiempo. Si alguno de estos falla, entonces no desea molestarse en ejecutar ninguna de las pruebas. Coloque solo las pruebas fundamentales en este grupo.
  • A mínimo conjunto de pruebas;
    • Para su requisito específico de esto sería un conjunto de pruebas que contienen todos los "rápidos" o "rápidos" pruebas, y determinar cuáles son.
  • A integral conjunto de pruebas;
    • Las pruebas que no pertenecen a ninguna de las otras categorías. Para su requisito específico, estas serían las pruebas "lento" o "largo".

Cuando se ejecuta sus pruebas, a continuación, puede elegir cuál de estos subconjuntos de pruebas para correr, tal vez la configuración de alguna forma de una secuencia de comandos.

Utilizo este enfoque para tener un gran efecto en las pruebas automatizadas (integradas en un sistema de integración continua). Hago esto teniendo una secuencia de comandos que, dependiendo de los parámetros de entrada, decidiría ejecutar solo pruebas de humo más pruebas mínimas; o, alternativamente, pruebas de humo, pruebas mínimas y pruebas integrales (es decir, todas ellas).

HTH

+0

Hola, gracias por toda la información, estoy buscando más cosas técnicas, ¿puedes escribir algo o poner algunos enlaces a tus herramientas? –

+0

Las herramientas específicas que uso no serán útiles para usted, ya que no son de Microsoft o Visual Studio. Por si acaso tienes curiosidad, serían CruiseControl para la integración continua y JUnit/FEST como las herramientas de prueba. Ahora que lo pienso, probablemente puedas hacer lo mismo usando CruiseControl.NET y cualquier herramienta de prueba compatible con xUnit. HTH. ¡Todo lo mejor! – bguiz

0

Es necesario configurar las pruebas para que se ejecutan en el servidor después de realizar la confirmación, a continuación, notificar al desarrollador (tal vez por correo electrónico?) Que de cualquier falla.

De esta forma se ejecutan las pruebas, independientemente de su duración, pero no se desperdicia tiempo del programador.

+0

Me gusta tu idea, pero quiero que el desarrollador ejecute algunas cosas antes de la confirmación –

Cuestiones relacionadas